[Résolu] Afficher une donnée d'un tableau structuré

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

[Résolu] Afficher une donnée d'un tableau structuré

Message par Micoute »

Bonjour à tous,

J'essaye de me faire un calendrier avec les fêtes à souhaiter et les numéros de semaines, mais pour une raison que j'ignore, la valeur affichée n'est pas la bonne alors que je les ai rangées dans un tableau structuré.
Ne voyant pas la solution, j'ai fait des recherches inabouties, c'est pourquoi je viens vers vous pour vous solliciter une fois de plus et je vous en remercie tous par anticipation.

Code : Tout sélectionner

;Almanach défilant 6 mois.pb

InitSprite() 
InitKeyboard()
InitMouse()
; 
Enumeration Fenetre
  #Fenetre_principale
EndEnumeration

Enumeration Gadgets	;
  #Bouton_Quitter
  #Police
  #Police2
  #Police_Lune
  #Police_Bouton_Quitter
EndEnumeration

Enumeration Actions 
  #f_sortie 
  #f_aucune 
EndEnumeration	

Enumeration Images
EndEnumeration 

Enumeration Table_de_verite
  #Faux
  #Vrai
EndEnumeration

#SecsParJour = 86400
Enumeration
  #Date_Annee
  #Date_Mois
  #Date_Semaine
  #Date_Jour
  #Date_Heure
  #Date_Minute
  #Date_Seconde
EndEnumeration


Structure MaDate
  Jour.i
  Mois.i
  NSem.i ;Numéro de semaine
EndStructure

Global annee.w
Global NumSem.b, NbJMR.b, date, NumJS
Global JourCourant.s, MoisCourant.s, DateCourante.s
Global Semaine.b
Global Masque.s = "%dddd %dd %mmm %yyyy" 
Global NomJours.s = "dimanche lundi mardi mercredi jeudi vendredi samedi"
Global NomJoursAbr.s = "dim lun mar mer jeu ven sam"
Global NomMois.s = "janvier février mars avril mai juin juillet août septembre octobre novembre décembre"
Global NomMoisAbr.s = "jan. fév. mars avr. mai juin juil. août sept. oct. nov. déc."

If LoadFont(#Police, "Calibri", 12, #PB_Font_Bold)
  Global.i Calibri_12 = FontID(#Police)
EndIf

Global Dim Mois$(12)
Global.MaDate Dim MaDonnee(365)

;-
Global.b Quitter = #Faux

Global.i CoulFond = $C0FFFF, CoulTexte, MoisEnCours = Month(Date()), Annee = Year(Date())
Global.s Masque = "%dddd %dd", Masque2 = "%dddd %dd %mmmm %yyyy", Texte$, JourSemaine, JourMois
Global.i V, W = 1, X = 2 , Y = 60, Z, i, Num_Mois, XX = X, YY = Y, EspaceMois, F_principale_h, Resultat

Global.s DateJour, JourSemaine, JourMois, JourMois2
Global.i DizJourMois, UnJourMois
ExamineDesktops() 
Global.i Largeur_ecran = DesktopWidth(0) 
Global.i Hauteur_ecran = DesktopHeight(0) 
Global.i Prof_ecran = DesktopDepth(0) 

EspaceMois = Largeur_ecran / 6

; 
; ouvrir une fenêtre maximisée la même taille que le bureau et sans bordure
; 
F_principale_h = OpenWindow(#Fenetre_principale, 0, 0, Largeur_ecran, Hauteur_ecran, "", 
                            #PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_Maximize) 
; 
; ouvrir un écran de la même taille que la fenêtre (c'est à dire couvrant l'ensemble)
; 
OpenWindowedScreen(F_principale_h, 0, 0, Largeur_ecran, Hauteur_ecran, 0, 0, 0, #PB_Screen_SmartSynchronization) 

SetClassLongPtr_(ScreenID(), #GCL_HCURSOR, LoadCursor_(0, #IDC_HAND)) ; SetClassLongPtr_ = Compatibilité 32-64 bits
ShowCursor_(#True)                                                    ; montrer le curseur

ClearScreen($FF89C0)
StartDrawing(ScreenOutput())

DrawingFont(Calibri_12)
DrawingMode(#PB_2DDrawing_AlphaChannel)
FrontColor($000000) : BackColor($FFC0C0)

Declare.s ChaineDate(Masque.s, date.l)
Declare.b SiBissextile(Annee=-1)
Declare.b JoursDansMois(annee=-1, mois=-1)
Declare TraitVertical(X, Y, Hauteur, Epaisseur = 1, Couleur = 0) ; Trace un trait vertical avec épaisseur et couleur choisies
Declare TraitHorizontal(X, Y, Longueur, Epaisseur = 1, Couleur = 0) ; Trace un trait horizontal avec épaisseur et couleur choisies
Declare Cadre(X, Y, Largeur, Hauteur, Epaisseur = 1, CouleurCadre = 0); Trace un cadre simple de la couleur choisie
Declare CadreColore(X, Y, Largeur, Hauteur, Epaisseur = 1, CouleurCadre = 0, CouleurFond = 0); Trace un cadre plein avec la couleur choisie
Declare CentrerTexte(Fenetre.I, Y.I, Texte.s, Couleur1, Couleur2 = $FF89C0) ; Centre le texte dans la fenêtre à la hauteur et à la couleur choisies.
Declare Calculer()
Declare.i MonJDS (date.i)
Declare.i NumSem(date.i)
Declare CalculerNumSem()
Declare Affiche(Annee)

Procedure.s ChaineDate(Masque.s, date.l) 
  
  Masque = ReplaceString (Masque, "%dddd" , StringField ( NomJours , DayOfWeek (date) + 1, " " )) 
  Masque = ReplaceString (Masque, "%ddd" , StringField ( NomJoursAbr , DayOfWeek (date) + 1, " " )) 
  Masque = ReplaceString (Masque, "%mmmm" , StringField ( NomMois , Month (date), " " )) 
  Masque = ReplaceString (Masque, "%mmm" , StringField ( NomMoisAbr , Month (date), " " )) 
  
  ProcedureReturn FormatDate (Masque, date) 
  
EndProcedure

Procedure.b SiBissextile(Annee=-1)
  ; Retourne Vrai si l'année est une année bissextile (366 jours)
  ; S'il n'y a aucun argument, l'année en cours est utilisée
  ;   Dans le calendrier grégorien, l'année bissextile est
  ;   toute année divisible par 4, sauf
  ;   année du centenaire non divisible par 400
  ; L'année équinoxe de printemps est d'environ 365.242374 jours longs (et croissants)
  
  If Annee<=0: Annee = Year(Date()): EndIf ; Cette année
  If (Mod(Annee,4)=0 And Mod(Annee,100)<>0) Or (Mod(Annee,400)=0)
    ProcedureReturn #True
  EndIf
  ProcedureReturn #False
EndProcedure

Procedure.b JoursDansMois(annee=-1, mois=-1)
  ; Retourne le nombre de jours dans le mois donné (28 .. 31)
  ; Si l'année est absente, l'année en cours est utilisée
  ; Si l'année est présente mais le mois est absent, février est utilisé
  ; Si l'année et le mois sont tous deux absents, le mois courant de l'année en cours est utilisé
  Protected Jours
  If annee<=0
    annee = Year(Date())
    If mois<=0: mois = Month(Date()): EndIf
  Else
    If mois<=0: mois = 2: EndIf
  EndIf
  If mois=2
    Jours = 28+SiBissextile(annee);
  Else
    jours = 31-$A55>>mois&1
  EndIf
  ProcedureReturn jours
EndProcedure

Procedure TraitVertical(X, Y, Hauteur, Epaisseur = 1, Couleur = 0) ; Trace un trait vertical avec épaisseur et couleur choisies
  Protected.i i = 0
  
  If Epaisseur > 0
    While i < Epaisseur
      Line(X + i, Y, 1, Hauteur, Couleur)
      i + 1
    Wend
  Else
    Line(X, Y, 1, Hauteur, Couleur)
  EndIf
EndProcedure

Procedure TraitHorizontal(X, Y, Longueur, Epaisseur = 1, Couleur = 0) ; Trace un trait horizontal avec épaisseur et couleur choisies
  Protected.i i = 0
  
  If Epaisseur > 0
    While i < Epaisseur
      Line(X, Y + i, Longueur, 1, Couleur)
      i + 1
    Wend
  Else
    Line(X, Y, Longueur, 1, Couleur)
  EndIf
EndProcedure

Procedure Cadre(X, Y, Largeur, Hauteur, Epaisseur = 1, CouleurCadre = 0); Trace un cadre simple de la couleur choisie                                                                        
  TraitHorizontal(X, Y, Largeur, Epaisseur, CouleurCadre)               ;Ligne supérieure
  
  TraitVertical(X, Y, Hauteur + Epaisseur, Epaisseur, CouleurCadre);Ligne gauche
  
  TraitVertical(X + Largeur, Y, Hauteur + Epaisseur, Epaisseur, CouleurCadre);Ligne droite
  
  TraitHorizontal(X, Y + Hauteur, Largeur, Epaisseur, CouleurCadre);Ligne inférieure
EndProcedure


Procedure CadreColore(X, Y, Largeur, Hauteur, Epaisseur = 1, CouleurCadre = 0, CouleurFond = 0); Trace un cadre plein avec la couleur choisie
  Cadre(X, Y, Largeur, Hauteur, Epaisseur, CouleurCadre)
  
  FillArea(X + Largeur / 2, Y + Hauteur / 2, CouleurCadre, CouleurFond);Remplir le cadre
EndProcedure

Macro Si(expression,Vrai,Faux)
  If Bool(expression)
    Vrai
  Else
    Faux
  EndIf
EndMacro

Procedure CentrerTexte(Fenetre.I, Y.I, Texte.s, Couleur1, Couleur2 = $FF89C0) ; Centre le texte dans la fenêtre à la hauteur et à la couleur choisies.
  DrawText((DesktopWidth(Fenetre) - TextWidth(Texte)) / 2, Y, Texte, Couleur1, Couleur2)
EndProcedure

Procedure Calculer()
  
  CadreColore(XX, YY - 20, EspaceMois * 6, 670, 1, $000000, $C0FFFF) ; Cadre du calendrier
  
  ; Initialiser les noms de mois
  For i = 1 To 12
    Mois$(i) = StringField(NomMois.s, i, " ")
    Mois$(i) = UCase(Left(Mois$(i), 1)) + Mid(Mois$(i), 2)
  Next i
  ;Afficher les mois du mois courant à la fin de l'année courante
  z = 0
  Num_Mois = MoisEnCours
  While Num_Mois < 13
    Affiche(Annee)
    Num_Mois + 1
    If Num_Mois = 13
      Num_Mois = 1
      Annee + 1
    EndIf
    z + 1
    If z < 5 And Num_Mois > 12
      Num_Mois = 1
      Annee + 1
      While Num_Mois < 13 And z < 5
        Affiche(Annee)
        Num_Mois + 1
        z + 1
      Wend
    EndIf
    If z > 5 ; si 6 mois sont affichés c'est suffisant
      Break
    EndIf
  Wend
  
  XX = X
  
  For i = 1 To 5
    TraitVertical(((i * EspaceMois) + XX),YY - 20, 670, 2, $000000) ; Traits entre chaque mois
  Next
  
  TraitHorizontal(XX, YY, EspaceMois * 6, 2, $000000) ; Trait sous les mois
  
  XX + 20
  ;- Hiver	
  If Mois$(MoisEnCours) = "Janvier"
    FillArea(XX , 50, $000000, $EEEEEE) ; hiver 2
    DrawText(XX , 41, Mois$(1), $000000, $EEEEEE)
    FillArea(XX + EspaceMois, 50, $000000, $EEEEEE) ; hiver 3
    DrawText(XX + EspaceMois, 41, Mois$(2), $000000, $EEEEEE)
    FillArea(XX + (EspaceMois * 2), 50, $000000, $72D772) ; printemps 1
    DrawText(XX + (EspaceMois * 2), 41, Mois$(3), $000000, $72D772)
    FillArea(XX + (EspaceMois * 3), 50, $000000, $72D772) ; printemps 2
    DrawText(XX + (EspaceMois * 3), 41, Mois$(4), $000000, $72D772)
    FillArea(XX + (EspaceMois * 4) , 50, $000000, $72D772) ; printemps 3
    DrawText(XX + (EspaceMois * 4) , 41, Mois$(5), $000000, $72D772)
    FillArea(XX + (EspaceMois * 5), 50, $000000, $00F0F0) ; été 1
    DrawText(XX + (EspaceMois * 5), 41, Mois$(6), $000000, $00F0F0)
  EndIf
  
  If Mois$(MoisEnCours) = "Février"
    FillArea(XX , 50, $000000, $EEEEEE) ; hiver 3
    DrawText(XX , 41, Mois$(2), $000000, $EEEEEE)
    FillArea(XX + EspaceMois, 50, $000000, $72D772) ; printemps 1
    DrawText(XX + EspaceMois, 41, Mois$(3), $000000, $72D772)
    FillArea(XX + (EspaceMois * 2), 50, $000000, $72D772) ; printemps 2
    DrawText(XX + (EspaceMois * 2), 41, Mois$(4), $000000, $72D772)
    FillArea(XX + (EspaceMois * 3) , 50, $000000, $72D772) ; printemps 3
    DrawText(XX + (EspaceMois * 3) , 41, Mois$(5), $000000, $72D772)
    FillArea(XX + (EspaceMois * 4), 50, $000000, $00F0F0) ; été 1
    DrawText(XX + (EspaceMois * 4), 41, Mois$(6), $000000, $00F0F0)
    FillArea(XX + (EspaceMois * 5), 50, $000000, $00F0F0) ; été 2
    DrawText(XX + (EspaceMois * 5), 41, Mois$(7), $000000, $00F0F0)
  EndIf
  
  ;- Printemps
  If  Mois$(MoisEnCours) = "Mars"
    FillArea(XX , 50, $000000, $72D772) ; printemps 1
    DrawText(XX , 41, Mois$(3), $000000, $72D772)
    FillArea(XX + EspaceMois, 50, $000000, $72D772) ; printemps 2
    DrawText(XX + EspaceMois, 41, Mois$(4), $000000, $72D772)
    FillArea(XX + (EspaceMois * 2) , 50, $000000, $72D772) ; printemps 3
    DrawText(XX + (EspaceMois * 2) , 41, Mois$(5), $000000, $72D772)
    FillArea(XX + (EspaceMois * 3), 50, $000000, $00F0F0) ; été 1
    DrawText(XX +(EspaceMois * 3), 41, Mois$(6), $000000, $00F0F0)
    FillArea(XX + (EspaceMois * 4), 50, $000000, $00F0F0) ; été 2
    DrawText(XX + (EspaceMois * 4), 41, Mois$(7), $000000, $00F0F0)
    FillArea(XX + (EspaceMois * 5), 50, $000000, $00F0F0) ; été 3
    DrawText(XX + (EspaceMois * 5), 41, Mois$(8), $000000, $00F0F0)	
  EndIf
  
  If  Mois$(MoisEnCours) = "Avril"
    FillArea(XX, 50, $000000, $72D772) ; printemps 2
    DrawText(XX, 41, Mois$(4), $000000, $72D772)
    FillArea(XX + EspaceMois , 50, $000000, $72D772) ; printemps 3
    DrawText(XX + EspaceMois , 41, Mois$(5), $000000, $72D772)
    FillArea(XX + (EspaceMois * 2), 50, $000000, $00F0F0) ; été 1
    DrawText(XX + (EspaceMois * 2), 41, Mois$(6), $000000, $00F0F0)
    FillArea(XX + (EspaceMois * 3), 50, $000000, $00F0F0) ; été 2
    DrawText(XX + (EspaceMois * 3), 41, Mois$(7), $000000, $00F0F0)
    FillArea(XX + (EspaceMois * 4), 50, $000000, $00F0F0) ; été 3
    DrawText(XX + (EspaceMois * 4), 41, Mois$(8), $000000, $00F0F0)
    FillArea(XX + (EspaceMois * 5), 50, $000000, $81C5FE) ; automne 1
    DrawText(XX + (EspaceMois * 5), 41, Mois$(9), $000000, $81C5FE)	
  EndIf
  
  If  Mois$(MoisEnCours) = "Mai"
    FillArea(XX , 50, $000000, $72D772) ; printemps 3
    DrawText(XX , 41, Mois$(5), $000000, $72D772)
    FillArea(XX + EspaceMois, 50, $000000, $00F0F0) ; été 1
    DrawText(XX + (EspaceMois), 41, Mois$(6), $000000, $00F0F0)
    FillArea(XX + (EspaceMois * 2), 50, $000000, $00F0F0) ; été 2
    DrawText(XX + (EspaceMois * 2), 41, Mois$(7), $000000, $00F0F0)
    FillArea(XX + (EspaceMois * 3), 50, $000000, $00F0F0) ; été 3
    DrawText(XX + (EspaceMois * 3), 41, Mois$(8), $000000, $00F0F0)
    FillArea(XX + (EspaceMois * 4), 50, $000000, $81C5FE) ; automne 1
    DrawText(XX + (EspaceMois * 4), 41, Mois$(9), $000000, $81C5FE)
    FillArea(XX + (EspaceMois * 5), 50, $000000, $81C5FE) ; automne 2
    DrawText(XX + (EspaceMois * 5), 41, Mois$(10), $000000, $81C5FE)	
  EndIf
  
  ;- été
  If  Mois$(MoisEnCours) = "Juin"
    FillArea(XX , 50, $000000, $00F0F0) ; été 1
    DrawText(XX , 41, Mois$(6), $000000, $00F0F0)
    FillArea(XX + EspaceMois, 50, $000000, $00F0F0) ; été 2
    DrawText(XX + EspaceMois, 41, Mois$(7), $000000, $00F0F0)
    FillArea(XX + (EspaceMois * 2), 50, $000000, $00F0F0) ; été 3
    DrawText(XX + (EspaceMois * 2), 41, Mois$(8), $000000, $00F0F0)
    FillArea(XX + (EspaceMois * 3), 50, $000000, $81C5FE) ; automne 1
    DrawText(XX + (EspaceMois * 3), 41, Mois$(9), $000000, $81C5FE)
    FillArea(XX + (EspaceMois * 4), 50, $000000, $81C5FE) ; automne 2
    DrawText(XX + (EspaceMois * 4), 41, Mois$(10), $000000, $81C5FE)
    FillArea(XX + (EspaceMois * 5), 50, $000000, $81C5FE) ; automne 3
    DrawText(XX + (EspaceMois * 5), 41, Mois$(11), $000000, $81C5FE)	
  EndIf
  
  If  Mois$(MoisEnCours) = "Juillet"
    FillArea(XX , 50, $000000, $00F0F0) ; été 2
    DrawText(XX , 41, Mois$(7), $000000, $00F0F0)
    FillArea(XX + EspaceMois, 50, $000000, $00F0F0) ; été 3
    DrawText(XX + EspaceMois, 41, Mois$(8), $000000, $00F0F0)
    FillArea(XX + (EspaceMois * 2), 50, $000000, $81C5FE) ; automne 1
    DrawText(XX + (EspaceMois * 2), 41, Mois$(9), $000000, $81C5FE)
    FillArea(XX + (EspaceMois * 3), 50, $000000, $81C5FE) ; automne 2
    DrawText(XX + (EspaceMois * 3), 41, Mois$(10), $000000, $81C5FE)
    FillArea(XX + (EspaceMois * 4), 50, $000000, $81C5FE) ; automne 3
    DrawText(XX + (EspaceMois * 4), 41, Mois$(11), $000000, $81C5FE)
    FillArea(XX + (EspaceMois * 5), 50, $000000, $EEEEEE) ; hiver 1
    DrawText(XX + (EspaceMois * 5), 41, Mois$(12), $000000, $EEEEEE)
  EndIf
  
  If  Mois$(MoisEnCours) = "Août"
    FillArea(XX , 50, $000000, $00F0F0) ; été 3
    DrawText(XX , 41, Mois$(8), $000000, $00F0F0)
    FillArea(XX + EspaceMois, 50, $000000, $81C5FE) ; automne 1
    DrawText(XX + EspaceMois, 41, Mois$(9), $000000, $81C5FE)
    FillArea(XX + (EspaceMois * 2), 50, $000000, $81C5FE) ; automne 2
    DrawText(XX + (EspaceMois * 2), 41, Mois$(10), $000000, $81C5FE)
    FillArea(XX + (EspaceMois * 3), 50, $000000, $81C5FE) ; automne 3
    DrawText(XX + (EspaceMois * 3), 41, Mois$(11), $000000, $81C5FE)
    FillArea(XX + (EspaceMois * 4), 50, $000000, $EEEEEE) ; hiver 1
    DrawText(XX + (EspaceMois * 4), 41, Mois$(12), $000000, $EEEEEE)
    FillArea(XX + (EspaceMois * 5), 50, $000000, $EEEEEE) ; hiver 2
    DrawText(XX + (EspaceMois * 5), 41, Mois$(1), $000000, $EEEEEE)
  EndIf
  
  
  ;- Automne
  If  Mois$(MoisEnCours) = "Septembre"
    FillArea(XX , 50, $000000, $81C5FE) ; automne 1
    DrawText(XX , 41, Mois$(9), $000000, $81C5FE)
    FillArea(XX + EspaceMois, 50, $000000, $81C5FE) ; automne 2
    DrawText(XX + (EspaceMois), 41, Mois$(10), $000000, $81C5FE)
    FillArea(XX + (EspaceMois * 2), 50, $000000, $81C5FE) ; automne 3
    DrawText(XX + (EspaceMois * 2), 41, Mois$(11), $000000, $81C5FE)
    FillArea(XX + (EspaceMois * 3), 50, $000000, $EEEEEE) ; hiver 1
    DrawText(XX + (EspaceMois * 3), 41, Mois$(12), $000000, $EEEEEE)
    FillArea(XX + (EspaceMois * 4), 50, $000000, $EEEEEE) ; hiver 2
    DrawText(XX + (EspaceMois * 4), 41, Mois$(1), $000000, $EEEEEE)
    FillArea(XX + (EspaceMois * 5), 50, $000000, $EEEEEE) ; hiver 3
    DrawText(XX + (EspaceMois * 5), 41, Mois$(2), $000000, $EEEEEE)
  EndIf
  
  If  Mois$(MoisEnCours) = "Octobre"
    FillArea(XX, 50, $000000, $81C5FE) ; automne 2
    DrawText(XX , 41, Mois$(10), $000000, $81C5FE)
    FillArea(XX + EspaceMois, 50, $000000, $81C5FE)
    DrawText(XX + (EspaceMois), 41, Mois$(11), $000000, $81C5FE)
    FillArea(XX + (EspaceMois * 2), 50, $000000, $EEEEEE) ; hiver 1
    DrawText(XX + (EspaceMois * 2), 41, Mois$(12), $000000, $EEEEEE)
    FillArea(XX + (EspaceMois * 3), 50, $000000, $EEEEEE) ; hiver 2
    DrawText(XX + (EspaceMois * 3), 41, Mois$(1), $000000, $EEEEEE)
    FillArea(XX + (EspaceMois * 4), 50, $000000, $EEEEEE) ; hiver 3
    DrawText(XX + (EspaceMois * 4), 41, Mois$(2), $000000, $EEEEEE)
    FillArea(XX + (EspaceMois * 5), 50, $000000, $72D772) ; printemps 1
    DrawText(XX + (EspaceMois * 5), 41, Mois$(3), $000000, $72D772)
  EndIf
  
  If  Mois$(MoisEnCours) = "Novembre"
    FillArea(XX, 50, $000000, $81C5FE) ; automne 3
    DrawText(XX, 41, Mois$(11), $000000, $81C5FE)
    FillArea(XX + (EspaceMois), 50, $000000, $EEEEEE) ; hiver 1
    DrawText(XX + (EspaceMois), 41, Mois$(12), $000000, $EEEEEE)
    FillArea(XX + (EspaceMois * 2), 50, $000000, $EEEEEE) ; hiver 2
    DrawText(XX + (EspaceMois * 2), 41, Mois$(1), $000000, $EEEEEE)
    FillArea(XX + (EspaceMois * 3), 50, $000000, $EEEEEE) ; hiver 3
    DrawText(XX + (EspaceMois * 3), 41, Mois$(2), $000000, $EEEEEE)
    FillArea(XX + (EspaceMois * 4), 50, $000000, $72D772) ; printemps 1
    DrawText(XX + (EspaceMois * 4), 41, Mois$(3), $000000, $72D772)
    FillArea(XX + (EspaceMois * 5), 50, $000000, $72D772) ; printemps 2
    DrawText(XX + (EspaceMois * 5), 41, Mois$(4), $000000, $72D772)
  EndIf
  
  If Mois$(MoisEnCours) = "Décembre"
    FillArea(XX , 50, $000000, $EEEEEE) ; hiver 1
    DrawText(XX , 41, Mois$(12), $000000, $EEEEEE)
    DrawText(XX + EspaceMois, 41, Mois$(12), $000000, $EEEEEE)
    FillArea(XX + EspaceMois, 50, $000000, $EEEEEE) ; hiver 2
    DrawText(XX + EspaceMois, 41, Mois$(1), $000000, $EEEEEE)
    FillArea(XX + (EspaceMois * 2), 50, $000000, $EEEEEE) ; hiver 3
    DrawText(XX + (EspaceMois * 2), 41, Mois$(2), $000000, $EEEEEE)
    FillArea(XX + (EspaceMois * 3), 50, $000000, $72D772) ; printemps 1
    DrawText(XX + (EspaceMois * 3), 41, Mois$(3), $000000, $72D772)
    FillArea(XX + (EspaceMois * 4), 50, $000000, $72D772) ; printemps 2
    DrawText(XX + (EspaceMois * 4), 41, Mois$(4), $000000, $72D772)
    FillArea(XX + (EspaceMois * 5), 50, $000000, $72D772) ; printemps 3
    DrawText(XX + (EspaceMois * 5), 41, Mois$(5), $000000, $72D772)
  EndIf
  
  XX = X
EndProcedure

Procedure.i MonJDS (date.i)
   Protected d.i
   
   d = DayOfWeek(date)
   If d = 0
      d = 7             ; pour le dimanche, retourne 7 au lieu de 0
   EndIf
   ProcedureReturn d
EndProcedure


Procedure.i NumSem(date.i)
   ; Les calculs sont basés sur le fait que la première semaine de l'année
   ; contient toujours le 4 Janvier.
   ; [conformément à http://en.wikipedia.org/wiki/Seven-day_week#Week_numbering
   ;  ou mieux    http://de.wikipedia.org/wiki/Woche#Kalenderwoche]
   
   Protected jda.i=DayOfYear(date), annee.i=Year(date)
   Protected DernPrec.i  ; dernier jour de la dernière semaine de l'année précédente
   Protected DernCour.i  ; dernier jour de la dernière semaine de l'année en cours
   
   DernPrec = 4 - MonJDS(Date(annee, 1, 4, 0,0,0))
   DernCour = 4 - MonJDS(Date(annee,12,28, 0,0,0)) + DayOfYear(Date(annee,12,31, 0,0,0))
   
   If jda <= DernCour
      If jda <= DernPrec
         ; Le jour donné est dans la dernière semaine de l'année précédente.
         jda + DayOfYear(Date(annee-1,12,31, 0,0,0))
         DernPrec = 4 - MonJDS(Date(annee-1,1,4, 0,0,0))
      EndIf
      ProcedureReturn Round((jda-DernPrec)/7, #PB_Round_Up)
   Else
      ; Le jour donné est dans la première semaine de l'année prochaine.
      ProcedureReturn 1
   EndIf
EndProcedure

Procedure CalculerNumSem()
  For j = 1 To 12
    For i = 1 To JoursDansMois(Year(Date()), j)
      ;MaDonnee(W-1)\Jour = i
      ;MaDonnee(W-1)\Mois = j
      MaDonnee(W-1)\NSem = NumSem(Date(Year(Date()), j, i, 0, 0, 0))
      W + 1
    Next i
  Next j  
EndProcedure

 Procedure Affiche(Annee) 
   
  For i = 1 To JoursDansMois(Annee, Num_Mois)
    DateJour = ChaineDate(Masque, Date(Annee, Num_Mois, i, 0, 0, 0))
    JourSemaine = StringField(DateJour, 1, " ")
    JourSemaine = UCase(Left(JourSemaine, 1)) + Right(JourSemaine, Len(JourSemaine) - 1)
    JourMois = StringField(DateJour, 2, " ")
    DizJourMois = Val(Left(JourMois, 1))
    UnJourMois = Val(Right(JourMois ,1))
    
    FrontColor(0)
    BackColor(CoulFond)
    DrawingFont(Calibri_12)
    Texte$ = ""
    
    Select JourSemaine ;- sélection Jds
      Case "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"
        FrontColor($00)
        BackColor(CoulFond)
        DrawText(XX + 2, YY, LSet(JourSemaine, 2, " ") + "   ") ; Jours de semaine en noir
        If UnJourMois > 0 And DizJourMois
          DrawText(XX + 26, YY, Str(DizJourMois)) ; dizaine du mois
          DrawText(XX + 26 + TextWidth("0"), YY, Str(UnJourMois)) ; Jour du mois
        ElseIf DizJourMois < 1
          DrawText(XX + 26 + TextWidth("0"), YY, Str(UnJourMois)) ; dizaine du mois
        ElseIf DizJourMois > 0 And UnJourMois = 0                 ; 10 20 ou 30
          DrawText(XX + 26, YY, Str(DizJourMois))                 ; dizaine du mois
          DrawText(XX + 26 + TextWidth("0"), YY, "0")             ; Jour du mois			
        EndIf
        
      Case "Dimanche" ;- sélection dimanche
        FrontColor($FF)
        BackColor(CoulFond)
        DrawText(XX + 2, YY, LSet(JourSemaine, 2, " ") + "   ") ; dimanche en rouge
        If UnJourMois > 0 And DizJourMois
          DrawText(XX + 26, YY, Str(DizJourMois)) ; dizaine du MoisEnCours
          DrawText(XX + 26 + TextWidth("0"), YY, Str(UnJourMois)) ; Jour du MoisEnCours
        ElseIf DizJourMois < 1
          DrawText(XX + 26 + TextWidth("0"), YY, Str(UnJourMois)) ; dizaine du MoisEnCours
        ElseIf DizJourMois > 0 And UnJourMois = 0                 ; 10 20 ou 30
          DrawText(XX + 26, YY, Str(DizJourMois))                 ; dizaine du mois
          DrawText(XX + 26 + TextWidth("0"), YY, "0")             ; Jour du mois					
        EndIf
        TraitHorizontal(XX, YY + TextHeight(" "), EspaceMois)
        V = DayOfYear(Date(Annee,Num_Mois,Val(JourMois),0,0,0))
        DrawText(XX + 290, YY, Str(MaDonnee(V)\NSem),0)
    EndSelect
    
    ;Debug MaDonnee(66)\Jour
    ;Debug MaDonnee(66)\Mois
    ;Debug MaDonnee(66)\NSem
    
    ;- Fêtes fixes    
    Select Num_Mois
      Case 1
        Select JourMois
          Case "01"
          Case "02"
            DrawText(XX + 70, YY, "Basile",0)
          Case "03"
            DrawText(XX + 70, YY, "Geneviève",0)
          Case "04"
            DrawText(XX + 70, YY, "Odilon",0)
          Case "05"
            DrawText(XX + 70, YY, "Edouard",0)
          Case "06"
            DrawText(XX + 70, YY, "Mélaine",0)
          Case "07"
            DrawText(XX + 70, YY, "Raymond",0)
          Case "08"
            DrawText(XX + 70, YY, "Lucien",0)
          Case "09"
            DrawText(XX + 70, YY, "Alix",0)
          Case "10"
            DrawText(XX + 70, YY, "Guillaume",0)
          Case "11"
            DrawText(XX + 70, YY, "Pauline",0)
          Case "12"
            DrawText(XX + 70, YY, "Tatiana",0)
          Case "13"
            DrawText(XX + 70, YY, "Yvette",0)
          Case "14"
            DrawText(XX + 70, YY, "Nina",0)
          Case "15"
            DrawText(XX + 70, YY, "Rémi",0)
          Case "16"
            DrawText(XX + 70, YY, "Marcel",0)
          Case "17"
            DrawText(XX + 70, YY, "Roseline",0)
          Case "18"
            DrawText(XX + 70, YY, "Prisca",0)
          Case "19"
            DrawText(XX + 70, YY, "Marius",0)
          Case "20"
            DrawText(XX + 70, YY, "Sébastien",0)
          Case "21"
            DrawText(XX + 70, YY, "Agnès",0)
          Case "22"
            DrawText(XX + 70, YY, "Vincent",0)
          Case "23"
            DrawText(XX + 70, YY, "Barnard",0)
          Case "24"
            DrawText(XX + 70, YY, "François de Sales",0)
          Case "25"
            DrawText(XX + 70, YY, "Conversion de Paul",0)
          Case "26"
            DrawText(XX + 70, YY, "Paule",0)
          Case "27"
            DrawText(XX + 70, YY, "Angèle",0)
          Case "28"
            DrawText(XX + 70, YY, "Thomas d'Aquin",0)
          Case "29"
            DrawText(XX + 70, YY, "Gildas",0)
          Case "30"
            DrawText(XX + 70, YY, "Martine",0)
          Case "31"
            DrawText(XX + 70, YY, "Marcelle",0)
        EndSelect
      Case 2
        Select JourMois
          Case "01"
            DrawText(XX + 70, YY, "Ella",0)
          Case "02"
            DrawText(XX + 70, YY, "Présentation",0)
          Case "03"
            DrawText(XX + 70, YY, "Blaise",0)
          Case "04"
            DrawText(XX + 70, YY, "Véronique",0)
          Case "05"
            DrawText(XX + 70, YY, "Agathe",0)
          Case "06"
            DrawText(XX + 70, YY, "Gaston",0)
          Case "07"
            DrawText(XX + 70, YY, "Eugènie",0)
          Case "08"
            DrawText(XX + 70, YY, "Jacqueline",0)
          Case "09"
            DrawText(XX + 70, YY, "Apolline",0)
          Case "10"
            DrawText(XX + 70, YY, "Arnaud",0)
          Case "11"
            DrawText(XX + 70, YY, "Notre Dame de Lourdes",0)
          Case "12"
            DrawText(XX + 70, YY, "Félix",0)
          Case "13"
            DrawText(XX + 70, YY, "Béatrice",0)
          Case "14"
            DrawText(XX + 70, YY, "Valentin",0)
          Case "15"
            DrawText(XX + 70, YY, "Claude",0)
          Case "16"
            DrawText(XX + 70, YY, "Julienne",0)
          Case "17"
            DrawText(XX + 70, YY, "Alexis",0)
          Case "18"
            DrawText(XX + 70, YY, "Bernadette",0)
          Case "19"
            DrawText(XX + 70, YY, "Gabin",0)
          Case "20"
            DrawText(XX + 70, YY, "Aimée",0)
          Case "21"
            DrawText(XX + 70, YY, "Damien",0)
          Case "22"
            DrawText(XX + 70, YY, "Isabelle",0)
          Case "23"
            DrawText(XX + 70, YY, "Lazare",0)
          Case "24"
            DrawText(XX + 70, YY, "Modeste",0)
          Case "25"
            DrawText(XX + 70, YY, "Roméo",0)
          Case "26"
            DrawText(XX + 70, YY, "Nestor",0)
          Case "27"
            DrawText(XX + 70, YY, "Honorine",0)
          Case "28" 
            DrawText(XX + 70, YY, "Romain",0)
          Case "29"
            DrawText(XX + 70, YY, "Auguste",0)
        EndSelect
      Case 3
        Select JourMois
          Case "01"
            DrawText(XX + 70, YY, "Aubin",0)
          Case "02"
            DrawText(XX + 70, YY, "Charles le Bon",0)
          Case "03"
            DrawText(XX + 70, YY, "Guénolé",0)
          Case "04"
            DrawText(XX + 70, YY, "Casimir",0)
          Case "05"
            DrawText(XX + 70, YY, "Olive",0)
          Case "06"
            DrawText(XX + 70, YY, "Colette",0)
          Case "07"
            DrawText(XX + 70, YY, "Félicité",0)
          Case "08"
            DrawText(XX + 70, YY, "Jean de Dieu",0)
          Case "09"
            DrawText(XX + 70, YY, "Françoise",0)
          Case "10"
            DrawText(XX + 70, YY, "Vivien",0)
          Case "11"
            DrawText(XX + 70, YY, "Rosine",0)
          Case "12"
            DrawText(XX + 70, YY, "Justine",0)
          Case "13"
            DrawText(XX + 70, YY, "Rodrigue",0)
          Case "14"
            DrawText(XX + 70, YY, "Mathilde",0)
          Case "15"
            DrawText(XX + 70, YY, "Louise",0)
          Case "16"
            DrawText(XX + 70, YY, "Bénédicte",0)
          Case "17"
            DrawText(XX + 70, YY, "Patrice",0)
          Case "18"
            DrawText(XX + 70, YY, "Cyrille",0)
          Case "19"
            DrawText(XX + 70, YY, "Joseph",0)
          Case "20"
            DrawText(XX + 70, YY, "Anatole",0)
          Case "21"
            DrawText(XX + 70, YY, "Clémence",0)
          Case "22"
            DrawText(XX + 70, YY, "Léa",0)
          Case "23"
            DrawText(XX + 70, YY, "Victorien",0)
          Case "24"
            DrawText(XX + 70, YY, "Catherine",0)
          Case "25"
            DrawText(XX + 70, YY, "Annonciation",0)
          Case "26"
            DrawText(XX + 70, YY, "Larissa",0)
          Case "27"
            DrawText(XX + 70, YY, "Habib",0)
          Case "28"
            DrawText(XX + 70, YY, "Gontran",0)
          Case "29"
            DrawText(XX + 70, YY, "Gwladys",0)
          Case "30"
            DrawText(XX + 70, YY, "Amédée",0)
          Case "31"
            DrawText(XX + 70, YY, "Benjamin",0)
        EndSelect
      Case 4
        Select JourMois
          Case "01"
            DrawText(XX + 70, YY, "Hugues",0)
          Case "02"
            DrawText(XX + 70, YY, "Sandrine",0)
          Case "03"
            DrawText(XX + 70, YY, "Richard",0)
          Case "04"
            DrawText(XX + 70, YY, "Isidore",0)
          Case "05"
            DrawText(XX + 70, YY, "Irène",0)
          Case "06"
            DrawText(XX + 70, YY, "Marcellin",0)
          Case "07"
            DrawText(XX + 70, YY, "Jean-Baptiste de la Salle",0)
          Case "08"
            DrawText(XX + 70, YY, "Julie",0)
          Case "09"
            DrawText(XX + 70, YY, "Gautier",0)
          Case "10"
            DrawText(XX + 70, YY, "Fulbert",0)
          Case "11"
            DrawText(XX + 70, YY, "Stanislas",0)
          Case "12"
            DrawText(XX + 70, YY, "Jules",0)
          Case "13"
            DrawText(XX + 70, YY, "Ida",0)
          Case "14"
            DrawText(XX + 70, YY, "Maxime",0)
          Case "15"
            DrawText(XX + 70, YY, "Paterne",0)
          Case "16"
            DrawText(XX + 70, YY, "Benoît-Joseph",0)
          Case "17"
            DrawText(XX + 70, YY, "Anicet",0)
          Case "18"
            DrawText(XX + 70, YY, "Parfait",0)
          Case "19"
            DrawText(XX + 70, YY, "Emma",0)
          Case "20"
            DrawText(XX + 70, YY, "Odette",0)
          Case "21"
            DrawText(XX + 70, YY, "Anselme",0)
          Case "22"
            DrawText(XX + 70, YY, "Alexandre",0)
          Case "23"
            DrawText(XX + 70, YY, "Georges",0)
          Case "24"
            DrawText(XX + 70, YY, "Fidèle",0)
          Case "25"
            DrawText(XX + 70, YY, "Marc",0)
          Case "26"
            DrawText(XX + 70, YY, "Alida",0)
          Case "27"
            DrawText(XX + 70, YY, "Zita",0)
          Case "28"
            DrawText(XX + 70, YY, "Valérie",0)
          Case "29"
            DrawText(XX + 70, YY, "Catherine de Sienne",0)
          Case "30"
            DrawText(XX + 70, YY, "Robert",0)
        EndSelect
      Case 5
        Select JourMois
          Case "01"
          Case "02"
            DrawText(XX + 70, YY, "Boris",0)
          Case "03"
            DrawText(XX + 70, YY, "Philippe / Jacques",0)
          Case "04"
            DrawText(XX + 70, YY, "Sylvain",0)
          Case "05"
            DrawText(XX + 70, YY, "Judith",0)
          Case "06"
            DrawText(XX + 70, YY, "Prudence",0)
          Case "07"
            DrawText(XX + 70, YY, "Gisèle",0)
          Case "08"
          Case "09"
            DrawText(XX + 70, YY, "Pacôme",0)
          Case "10"
            DrawText(XX + 70, YY, "Solange",0)
          Case "11"
            DrawText(XX + 70, YY, "Estelle",0)
          Case "12"
            DrawText(XX + 70, YY, "Achille",0)
          Case "13"
            DrawText(XX + 70, YY, "Rolande",0)
          Case "14"
            DrawText(XX + 70, YY, "Matthias",0)
          Case "15"
            DrawText(XX + 70, YY, "Denise",0)
          Case "16"
            DrawText(XX + 70, YY, "Honoré",0)
          Case "17"
            DrawText(XX + 70, YY, "Pascal",0)
          Case "18"
            DrawText(XX + 70, YY, "Eric",0)
          Case "19"
            DrawText(XX + 70, YY, "Yves",0)
          Case "20"
            DrawText(XX + 70, YY, "Bernardin",0)
          Case "21"
            DrawText(XX + 70, YY, "Constantin",0)
          Case "22"
            DrawText(XX + 70, YY, "Emile",0)
          Case "23"
            DrawText(XX + 70, YY, "Didier",0)
          Case "24"
            DrawText(XX + 70, YY, "Donatien",0)
          Case "25"
            DrawText(XX + 70, YY, "Sophie",0)
          Case "26"
            DrawText(XX + 70, YY, "Bérenger",0)
          Case "27"
            DrawText(XX + 70, YY, "Augustin",0)
          Case "28"
            DrawText(XX + 70, YY, "Germain",0)
          Case "29"
            DrawText(XX + 70, YY, "Aymar",0)
          Case "30"
            DrawText(XX + 70, YY, "Ferdinand",0)
          Case "31"
            DrawText(XX + 70, YY, "Visitation de la vierge",0)
        EndSelect
      Case 6
        Select JourMois
          Case "01"
            DrawText(XX + 70, YY, "Justin",0)
          Case "02"
            DrawText(XX + 70, YY, "Blandine",0)
          Case "03"
            DrawText(XX + 70, YY, "Kévin",0)
          Case "04"
            DrawText(XX + 70, YY, "Clotilde",0)
          Case "05"
            DrawText(XX + 70, YY, "Igor",0)
          Case "06"
            DrawText(XX + 70, YY, "Norbert",0)
          Case "07"
            DrawText(XX + 70, YY, "Gilbert",0)
          Case "08"
            DrawText(XX + 70, YY, "Médard",0)
          Case "09"
            DrawText(XX + 70, YY, "Diane",0)
          Case "10"
            DrawText(XX + 70, YY, "Landry",0)
          Case "11"
            DrawText(XX + 70, YY, "Barnabé",0)
          Case "12"
            DrawText(XX + 70, YY, "Guy",0)
          Case "13"
            DrawText(XX + 70, YY, "Antoine de Padoue",0)
          Case "14"
            DrawText(XX + 70, YY, "Elisée",0)
          Case "15"
            DrawText(XX + 70, YY, "Germaine",0)
          Case "16"
            DrawText(XX + 70, YY, "Jean-François / Régis",0)
          Case "17"
            DrawText(XX + 70, YY, "Hervé",0)
          Case "18"
            DrawText(XX + 70, YY, "Léonce",0)
          Case "19"
            DrawText(XX + 70, YY, "Romuald",0)
          Case "20"
            DrawText(XX + 70, YY, "Silvère",0)
          Case "21"
            DrawText(XX + 70, YY, "Héraclide / Rodolphe",0)
          Case "22"
            DrawText(XX + 70, YY, "Alban",0)
          Case "23"
            DrawText(XX + 70, YY, "Audrey",0)
          Case "24"
            DrawText(XX + 70, YY, "Jean-Baptiste",0)
          Case "25"
            DrawText(XX + 70, YY, "Prosper",0)
          Case "26"
            DrawText(XX + 70, YY, "Anthelme",0)
          Case "27"
            DrawText(XX + 70, YY, "Fernand",0)
          Case "28"
            DrawText(XX + 70, YY, "Irénée",0)
          Case "29"
            DrawText(XX + 70, YY, "Pierre / Paul",0)
          Case "30"
            DrawText(XX + 70, YY, "Martial",0)
        EndSelect
      Case 7
        Select JourMois
          Case "01"
            DrawText(XX + 70, YY, "Thierry",0)
          Case "02"
            DrawText(XX + 70, YY, "Martinien",0)
          Case "03"
            DrawText(XX + 70, YY, "Thomas",0)
          Case "04"
            DrawText(XX + 70, YY, "Florent",0)
          Case "05"
            DrawText(XX + 70, YY, "Antoine",0)
          Case "06"
            DrawText(XX + 70, YY, "Mariette",0)
          Case "07"
            DrawText(XX + 70, YY, "Raoul",0)
          Case "08"
            DrawText(XX + 70, YY, "Thibault",0)
          Case "09"
            DrawText(XX + 70, YY, "Amandine",0)
          Case "10"
            DrawText(XX + 70, YY, "Ulrich",0)
          Case "11"
            DrawText(XX + 70, YY, "Benoît",0)
          Case "12"
            DrawText(XX + 70, YY, "Olivier",0)
          Case "13"
            DrawText(XX + 70, YY, "Henri / Joël",0)
          Case "14"
          Case "15"
            DrawText(XX + 70, YY, "Donald",0)
          Case "16"
            DrawText(XX + 70, YY, "N-D du Mont Carmel",0)
          Case "17"
            DrawText(XX + 70, YY, "Charlotte",0)
          Case "18"
            DrawText(XX + 70, YY, "Frédéric",0)
          Case "19"
            DrawText(XX + 70, YY, "Arsène",0)
          Case "20"
            DrawText(XX + 70, YY, "Marina",0)
          Case "21"
            DrawText(XX + 70, YY, "Victor",0)
          Case "22"
            DrawText(XX + 70, YY, "Marie-Madeleine",0)
          Case "23"
            DrawText(XX + 70, YY, "Brigitte",0)
          Case "24"
            DrawText(XX + 70, YY, "Christine",0)
          Case "25"
            DrawText(XX + 70, YY, "Jacques",0)
          Case "26"
            DrawText(XX + 70, YY, "Anne / Joachin",0)
          Case "27"
            DrawText(XX + 70, YY, "Nathalie",0)
          Case "28"
            DrawText(XX + 70, YY, "Samson",0)
          Case "29"
            DrawText(XX + 70, YY, "Marthe",0)
          Case "30"
            DrawText(XX + 70, YY, "Juliette",0)
          Case "31"
            DrawText(XX + 70, YY, "Ignace de Loyola",0)
        EndSelect
      Case 8
        Select JourMois
          Case "01"
            DrawText(XX + 70, YY, "Alphonse",0)
          Case "02"
            DrawText(XX + 70, YY, "Julien / Eymard",0)
          Case "03"
            DrawText(XX + 70, YY, "Lydie",0)
          Case "04"
            DrawText(XX + 70, YY, "Jean-Marie Vianney",0)
          Case "05"
            DrawText(XX + 70, YY, "Abel",0)
          Case "06"
            DrawText(XX + 70, YY, "Transfiguration",0)
          Case "07"
            DrawText(XX + 70, YY, "Gaétan",0)
          Case "08"
            DrawText(XX + 70, YY, "Dominique",0)
          Case "09"
            DrawText(XX + 70, YY, "Amour",0)
          Case "10"
            DrawText(XX + 70, YY, "Laurent",0)
          Case "11"
            DrawText(XX + 70, YY, "Claire",0)
          Case "12"
            DrawText(XX + 70, YY, "Clarisse",0)
          Case "13"
            DrawText(XX + 70, YY, "Hippolyte",0)
          Case "14"
            DrawText(XX + 70, YY, "Evrard",0)
          Case "15"
          Case "16"
            DrawText(XX + 70, YY, "Armel",0)
          Case "17"
            DrawText(XX + 70, YY, "Hyacinthe",0)
          Case "18"
            DrawText(XX + 70, YY, "Hélène",0)
          Case "19"
            DrawText(XX + 70, YY, "Jean-Eudes",0)
          Case "20"
            DrawText(XX + 70, YY, "Bernard",0)
          Case "21"
            DrawText(XX + 70, YY, "Christophe",0)
          Case "22"
            DrawText(XX + 70, YY, "Fabrice",0)
          Case "23"
            DrawText(XX + 70, YY, "Rose de Lima",0)
          Case "24"
            DrawText(XX + 70, YY, "Barthélémy",0)
          Case "25"
            DrawText(XX + 70, YY, "Louis",0)
          Case "26"
            DrawText(XX + 70, YY, "Natacha",0)
          Case "27"
            DrawText(XX + 70, YY, "Monique",0)
          Case "28"
            DrawText(XX + 70, YY, "Augustin",0)
          Case "29"
            DrawText(XX + 70, YY, "Sabine",0)
          Case "30"
            DrawText(XX + 70, YY, "Fiacre",0)
          Case "31"
            DrawText(XX + 70, YY, "Aristide",0)
        EndSelect
      Case 9
        Select JourMois
          Case "01"
            DrawText(XX + 70, YY, "Gilles",0)
          Case "02"
            DrawText(XX + 70, YY, "Ingrid",0)
          Case "03"
            DrawText(XX + 70, YY, "Grégoire",0)
          Case "04"
            DrawText(XX + 70, YY, "Rosalie",0)
          Case "05"
            DrawText(XX + 70, YY, "Raïssa",0)
          Case "06"
            DrawText(XX + 70, YY, "Bertrand",0)
          Case "07"
            DrawText(XX + 70, YY, "Reine",0)
          Case "08"
            DrawText(XX + 70, YY, "Nativité",0)
          Case "09"
            DrawText(XX + 70, YY, "Alain",0)
          Case "10"
            DrawText(XX + 70, YY, "Inès",0)
          Case "11"
            DrawText(XX + 70, YY, "Adelphe",0)
          Case "12"
            DrawText(XX + 70, YY, "Apollinaire",0)
          Case "13"
            DrawText(XX + 70, YY, "Aimé",0)
          Case "14"
            DrawText(XX + 70, YY, "Croix Glorieuse",0)
          Case "15"
            DrawText(XX + 70, YY, "Roland",0)
          Case "16"
            DrawText(XX + 70, YY, "Edith",0)
          Case "17"
            DrawText(XX + 70, YY, "Renaud",0)
          Case "18"
            DrawText(XX + 70, YY, "Nadège",0)
          Case "19"
            DrawText(XX + 70, YY, "Emilie",0)
          Case "20"
            DrawText(XX + 70, YY, "Davy",0)
          Case "21"
            DrawText(XX + 70, YY, "Matthieu",0)
          Case "22"
            DrawText(XX + 70, YY, "Maurice",0)
          Case "23"
            DrawText(XX + 70, YY, "Constant",0)
          Case "24"
            DrawText(XX + 70, YY, "Thècle",0)
          Case "25"
            DrawText(XX + 70, YY, "Hermann",0)
          Case "26"
            DrawText(XX + 70, YY, "Côme / Damien",0)
          Case "27"
            DrawText(XX + 70, YY, "Vincent de Paul",0)
          Case "28"
            DrawText(XX + 70, YY, "Venceslas",0)
          Case "29"
            DrawText(XX + 70, YY, "Michel / Gabriel / Raphaël",0)
          Case "30"
            DrawText(XX + 70, YY, "Jérôme",0)
        EndSelect
      Case 10
        Select JourMois
          Case "01"
            DrawText(XX + 70, YY, "Thérèse de l' Enfant Jésus",0)
          Case "02"
            DrawText(XX + 70, YY, "Léger",0)
          Case "03"
            DrawText(XX + 70, YY, "Gérard",0)
          Case "04"
            DrawText(XX + 70, YY, "François d'Assise",0)
          Case "05"
            DrawText(XX + 70, YY, "Fleur",0)
          Case "06"
            DrawText(XX + 70, YY, "Bruno",0)
          Case "07"
            DrawText(XX + 70, YY, "Serge",0)
          Case "08"
            DrawText(XX + 70, YY, "Pélagie",0)
          Case "09"
            DrawText(XX + 70, YY, "Denis",0)
          Case "10"
            DrawText(XX + 70, YY, "Ghislain",0)
          Case "11"
            DrawText(XX + 70, YY, "Firmin",0)
          Case "12"
            DrawText(XX + 70, YY, "Wilfried",0)
          Case "13"
            DrawText(XX + 70, YY, "Géraud",0)
          Case "14"
            DrawText(XX + 70, YY, "Juste",0)
          Case "15"
            DrawText(XX + 70, YY, "Thérèse d'Avila",0)
          Case "16"
            DrawText(XX + 70, YY, "Edwige",0)
          Case "17"
            DrawText(XX + 70, YY, "Baudoin",0)
          Case "18"
            DrawText(XX + 70, YY, "Luc",0)
          Case "19"
            DrawText(XX + 70, YY, "René",0)
          Case "20"
            DrawText(XX + 70, YY, "Adeline",0)
          Case "21"
            DrawText(XX + 70, YY, "Céline",0)
          Case "22"
            DrawText(XX + 70, YY, "Elodie",0)
          Case "23"
            DrawText(XX + 70, YY, "Jean de Capistran",0)
          Case "24"
            DrawText(XX + 70, YY, "Florentin",0)
          Case "25"
            DrawText(XX + 70, YY, "Crépin",0)
          Case "26"
            DrawText(XX + 70, YY, "Dimitri",0)
          Case "27"
            DrawText(XX + 70, YY, "Emeline",0)
          Case "28"
            DrawText(XX + 70, YY, "Jude",0)
          Case "29"
            DrawText(XX + 70, YY, "Narcisse",0)
          Case "30"
            DrawText(XX + 70, YY, "Bienvenu",0)
          Case "31"
            DrawText(XX + 70, YY, "Quentin",0)
        EndSelect
      Case 11
        Select JourMois
          Case "01"
          Case "02"
            DrawText(XX + 70, YY, "Défunts",0)
          Case "03"
            DrawText(XX + 70, YY, "Hubert",0)
          Case "04"
            DrawText(XX + 70, YY, "Charles",0)
          Case "05"
            DrawText(XX + 70, YY, "Sylvie",0)
          Case "06"
            DrawText(XX + 70, YY, "Bertille",0)
          Case "07"
            DrawText(XX + 70, YY, "Carine",0)
          Case "08"
            DrawText(XX + 70, YY, "Geoffroy",0)
          Case "09"
            DrawText(XX + 70, YY, "Théodore",0)
          Case "10"
            DrawText(XX + 70, YY, "Léon",0)
          Case "11"
            DrawText(XX + 70, YY, "Armistice 1914-1918",0)
          Case "12"
            DrawText(XX + 70, YY, "Christian",0)
          Case "13"
            DrawText(XX + 70, YY, "Brice",0)
          Case "14"
            DrawText(XX + 70, YY, "Sidoine",0)
          Case "15"
            DrawText(XX + 70, YY, "Albert",0)
          Case "16"
            DrawText(XX + 70, YY, "Marguerite",0)
          Case "17"
            DrawText(XX + 70, YY, "Elisabeth",0)
          Case "18"
            DrawText(XX + 70, YY, "Aude",0)
          Case "19"
            DrawText(XX + 70, YY, "Tanguy",0)
          Case "20"
            DrawText(XX + 70, YY, "Edmond",0)
          Case "21"
            DrawText(XX + 70, YY, "Christ Roi / Prés de Marie",0)
          Case "22"
            DrawText(XX + 70, YY, "Cécile",0)
          Case "23"
            DrawText(XX + 70, YY, "Clément",0)
          Case "24"
            DrawText(XX + 70, YY, "Flora",0)
          Case "25"
            DrawText(XX + 70, YY, "Catherine",0)
          Case "26"
            DrawText(XX + 70, YY, "Delphine",0)
          Case "27"
            DrawText(XX + 70, YY, "Sévrin",0)
          Case "28"
            DrawText(XX + 70, YY, "Jacques de la Marche",0)
          Case "29"
            DrawText(XX + 70, YY, "Saturnin",0)
          Case "30"
            DrawText(XX + 70, YY, "André",0)
        EndSelect
      Case 12
        Select JourMois
          Case "01"
            DrawText(XX + 70, YY, "Florence",0)
          Case "02"
            DrawText(XX + 70, YY, "Viviane",0)
          Case "03"
            DrawText(XX + 70, YY, "François-Xavier",0)
          Case "04"
            DrawText(XX + 70, YY, "Barbara",0)
          Case "05"
            DrawText(XX + 70, YY, "Gérald",0)
          Case "06"
            DrawText(XX + 70, YY, "Nicolas",0)
          Case "07"
            DrawText(XX + 70, YY, "Ambroise",0)
          Case "08"
            DrawText(XX + 70, YY, "Immaculée Conception",0)
          Case "09"
            DrawText(XX + 70, YY, "Pierre Fourier",0)
          Case "10"
            DrawText(XX + 70, YY, "Romaric",0)
          Case "11"
            DrawText(XX + 70, YY, "Daniel",0)
          Case "12"
            DrawText(XX + 70, YY, "Jeanne-Françoise de Chantal",0)
          Case "13"
            DrawText(XX + 70, YY, "Lucie",0)
          Case "14"
            DrawText(XX + 70, YY, "Odile",0)
          Case "15"
            DrawText(XX + 70, YY, "Ninon",0)
          Case "16"
            DrawText(XX + 70, YY, "Alice",0)
          Case "17"
            DrawText(XX + 70, YY, "Gaël",0)
          Case "18"
            DrawText(XX + 70, YY, "Gatien",0)
          Case "19"
            DrawText(XX + 70, YY, "Urbain",0)
          Case "20"
            DrawText(XX + 70, YY, "Théophile",0)
          Case "21"
            DrawText(XX + 70, YY, "Pierre Canisius",0)
          Case "22"
            DrawText(XX + 70, YY, "Françoise-Xavière",0)
          Case "23"
            DrawText(XX + 70, YY, "Armand",0)
          Case "24"
            DrawText(XX + 70, YY, "Adèle",0)
          Case "25"
            DrawText(XX + 70, YY, "Emmanuel",0)
          Case "26"
            DrawText(XX + 70, YY, "Etienne",0)
          Case "27"
            DrawText(XX + 70, YY, "Jean",0)
          Case "28"
            DrawText(XX + 70, YY, "Innocents",0)
          Case "29"
            DrawText(XX + 70, YY, "David",0)
          Case "30"
            DrawText(XX + 70, YY, "Roger",0)
          Case "31"
            DrawText(XX + 70, YY, "Sylvestre",0)
        EndSelect
    EndSelect
    
    If JourMois = "01" And Num_Mois = 1 : DrawText(XX + 70, YY, "Nouvel An", $FF) : EndIf		
    If JourMois = "01" And Num_Mois = 5 : DrawText(XX + 70, YY, "Fête du travail", $FF) : EndIf
    If JourMois = "08" And Num_Mois = 5 : DrawText(XX + 70, YY, "Victoire 1945", $FF) : EndIf		
    If JourMois = "14" And Num_Mois = 7 : DrawText(XX + 70, YY, "Fête Nationale", $FF) : EndIf		
    If JourMois = "15" And Num_Mois = 8 : DrawText(XX + 70, YY, "Assomption", $FF) : EndIf		
    If JourMois = "01" And Num_Mois = 11 : DrawText(XX + 70, YY, "Toussaint", $FF) : EndIf		
    If JourMois = "11" And Num_Mois = 11 : DrawText(XX + 70, YY, "Armistice 1918", $FF) : EndIf		
    If JourMois = "25" And Num_Mois = 12 : DrawText(XX + 70, YY, "Noël", $FF) : EndIf		
    If JourMois = "31" And Num_Mois = 12 : DrawText(XX + 70, YY, "St Sylvestre", $FF) : EndIf
    
    If JourMois = RSet(Str(Day(Date())), 2, "0") And Num_Mois = Month(Date()) ;- AuJourd'hui
      Si( JourSemaine = "Dimanche", CoulTexte = $FF, CoulTexte = 0)           ; Blanc sur fond rouge ou blanc sur fond noir
      
      DrawText(XX + 2, YY, LSet(JourSemaine, 2, " ") + "    ", $FFFFFF, CoulTexte)
      Si(JourMois >= "10", JourMois = Left(JourMois, 2), JourMois = "  " + Right(JourMois, 1))
    EndIf
    YY + TextHeight(" ") + 2
  Next
  XX + EspaceMois
  YY = Y
EndProcedure

Calculer()
CalculerNumSem()

CentrerTexte(#Fenetre_principale, 10, "Pressez une touche ou cliquez un bouton de la souris pour sortir", $FFFFFF)

StopDrawing()
FlipBuffers()

;- 
;- gestion des événements en boucle sans fin
; 
Global action.i = #f_aucune 
Repeat 
  Global event.i = WindowEvent() 
  Select event 
    Case #PB_Event_CloseWindow 
      action = #f_sortie 
    Case 0 
      ; 
      ; il n'Y a pas d'événements, donc faisons nos trucs graphiques
      ; 
      ExamineKeyboard() 
      If KeyboardPushed(#PB_Key_All) 
        action = #f_sortie 
      EndIf 
      
      ExamineMouse()
      Resultat = MouseButton(#PB_MouseButton_Left)
      If  Resultat = 1
        action = #f_sortie
      EndIf
      Resultat = MouseButton(#PB_MouseButton_Middle)
      If  Resultat = 1
        action = #f_sortie
      EndIf
      Resultat = MouseButton(#PB_MouseButton_Right)
      If  Resultat = 1
        action = #f_sortie
      EndIf
      ; 
      ; et montrons les choses sur l'écran
      ; 
      FlipBuffers() 
      ; 
  EndSelect 
Until action = #f_sortie 
; 
; fermer l'écran et la fenêtre en douceur
; 
CloseScreen() 
CloseWindow(#Fenetre_principale)
Dernière modification par Micoute le lun. 07/mars/2016 20:19, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Afficher une donnée d'un tableau structuré

Message par Anonyme2 »

Je ne sais pas ce qui cloche (c'est quoi qui s'affiche mal ?) mais à la ligne 65 il y a une déclaration bizarre qui ne gène pas le compilateur :

Code : Tout sélectionner

Global.MaDate Dim MaDonnee(365)
que j'ai remplacé par

Code : Tout sélectionner

Global Dim MaDonnee.MaDate(365)
Je n'ai pas vu de différence, tu en verras peut-être, je n'ai pas plus cherché.
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Afficher une donnée d'un tableau structuré

Message par Micoute »

Qu'on écrive d'une façon ou d'une autre ne change rien au type du tableau déclaré, mais ce n'est pas ça que je recherche.

Global[.<type>] <variable[.<type>]> [= <expression>] [, ...]


dans ma procédure CalculerNumSem(), j'ai l'instruction: MaDonnee(W-1)\NSem = NumSem(Date(Year(Date()), j, i, 0, 0, 0)) et si je debug MaDonnee(W-1), ça me sort la bonne valeur.

Dans ma procédure Affiche(Annee), j'ai l'instruction: DrawText(XX + 290, YY, Str(MaDonnee(V)\NSem),0) et ça affiche 0 et je ne vois pas d'où vient cette erreur.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Afficher une donnée d'un tableau structuré

Message par Anonyme2 »

J'ai posé un débug sur la valeur V et un autre sur W-1

Pour le 1er c'est tous les jours et l'autre que les dimanches (?)

La première valeur de V est 66 mais si je regarde le calendrier je ne tombe pas sur un dimanche.

En faisant un boucle de 0 à 365 j'ai toujours 0, la boucle étant effectuée 5 fois.

Code : Tout sélectionner

        DrawText(XX + 290, YY, Str(MaDonnee(V-4)\NSem),0)
        For i = 0 To 365
          Debug MaDonnee(i)\NSem
          Next
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Afficher une donnée d'un tableau structuré

Message par Micoute »

Spock a écrit :et Merci mon chien ;)
C'est un oubli totalement involontaire et je demande qu'on m'en excuse.

Merci pour l'aide apportée qui pour moi a une grande valeur.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Afficher une donnée d'un tableau structuré

Message par Anonyme2 »

La procedure CalculerNumSem() est appelé après la procedure Affiche(Annee)

Le problème ne serait pas la ?
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Afficher une donnée d'un tableau structuré

Message par Micoute »

En fait, ce n'est pas impossible, car j'ai fait ce programme sans plan, ni analyse particulière, auquel je rajoute des options au fur et à mesure.

Réédition

Tu avais parfaitement raison, car j'ai inverser l'ordre d'appel des procédures et ça fonctionne comme c'était prévu.


Merci énormément, ça c'est du bon conseil.
Dernière modification par Micoute le lun. 07/mars/2016 20:01, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Afficher une donnée d'un tableau structuré

Message par Anonyme2 »

Je ne connaissais pas
Global[.<type>] <variable[.<type>]> [= <expression>] [, ...]
On en apprend tous les jours :mrgreen:

D'ailleurs je n'avais pas vu de différences.
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: [Résolu] Afficher une donnée d'un tableau structuré

Message par Micoute »

Merci Dobro pour ta procedure, je l'ai incluse dans mon programme, ça l'a bien raccourci, sinon j'aurais mis ces données dans le tableau structuré.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: [Résolu] Afficher une donnée d'un tableau structuré

Message par Micoute »

Ne t'inquiète pour ça, car les jours que j'avais laissés sans fêtes, ce sont des fêtes fixes, jour de l'an, fête du travail, fête nationale, etc... donc comme ces dates sont connues, pas besoin de les calculer.

Tu as du y passer du temps et j'apprécie.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: Afficher une donnée d'un tableau structuré

Message par Anonyme2 »

Spock a écrit :@Denis ; et moi qui te fais aveuglement confiance ! :twisted:
Personne n'est parfait :mrgreen:
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: [Résolu] Afficher une donnée d'un tableau structuré

Message par Micoute »

La perfection n'est pas dans ce monde.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: [Résolu] Afficher une donnée d'un tableau structuré

Message par Anonyme2 »

La perfection, c'est comme l'horizon:
On la voit de loin mais on ne l'atteint jamais.
Répondre