Bonjour,
Mon intitulé est clair sans trop l'être alors je vais détailler un peu plus. J'ai codé une série de rectangles (365). Ces rectangles doivent se colorier en fonction de si ils appartiennent à la période x (avec x entier allant de 1 à 12 par exemple).
Cette période x est définie par une "Date_début" et "une Date_fin". J'ai donc codé une fonction qui me parcourt une colonne dans un formulaire "Num_chrono_plan" (qui correspond à mon numéro de période x) et pour chaque valeur de x, correspond une couleur différente donc chaque période possède sa couleur.
Pour chaque valeur x, je veux que la fonction aille me chercher la Date_début et la Date_fin et qu'elle me colorie toutes les rectangles entre.
Le problème c'est que ma fonction, au lieu de colorier, pour Num_plan_chrono = x, les cases de i à j, elle me colorie la case x, (j-i) fois. En plus, elle ne me prend que la Date_début et Date_fin pour Num_chrono_plan = 1 et l'applique partout au lieu d'aller me chercher les valeurs pour Num_chrono_plan = 2, etc.
Voici le code :
Voyez le résultat sur l'image jointe, or moi je voudrais qu'il me colorie en bleu les 61 premières cases si on suit l'exemple sur l'image, puis en blanc les 61 suivantes, etc ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 Dim i As Integer Dim Date_début As Date Dim Date_fin As Date Dim d As Integer Dim Date_début_NbJours As Double Dim Date_fin_NbJours As Double Dim Debut_Annee As Date Dim Num_chrono_plan As Integer Dim MonParametre As String 'Implémentation de la date du début d'année Debut_Annee = "01/01/" & [Forms]![MonFormulaire]![CbAnnee] MonParametre = [Forms]![MonFormulaire]![MonParametre] Num_chrono_plan = [Forms]![MonFormulaire]![Num_chrono_plan] 'Colorie les périodes pour MonParametre en fonction du Num_chrono_plan For Num_chrono_plan = 1 To 1 Date_début_NbJours = DateDiff("d", Debut_Annee, [Forms]![MonFormulaire]![Date_début]) + 1 Date_fin_NbJours = DateDiff("d", Debut_Annee, [Forms]![MonFormulaire]![Date_fin]) + 1 If MonParametre <> "" Then For i = Date_début_NbJours To Date_fin_NbJours [Forms].BackColor = vbBlue [Forms].BackStyle = 1 Next i End If Next Num_chrono_plan For Num_chrono_plan = 2 To 2 ... etc ...
Quand je fais le pas-à-pas, le code me réitère 61 fois le coloriage de la case 1 donc il ne parcourt pas mon tableau, et je ne sais vraiment pas pourquoi.
Merci d'avance.
PS : Si je passe par une requête SQL pour aller chercher mon Num_chrono_plan et aussi une pour mes 2 dates début et fin, ça sera pareil? Je ne sais pas si ça marchera comme je le veux puisque logiquement, ça fait la même chose que d'aller le chercher directement dans mon formulaire non?
Partager