Bonjour,
Je dois réaliser un planning avec des dates début et fin de stage. Pour colorier le planning j'utilise les numéros de semaine de chacun des dates (col H pour la sem 1 jusqu'à col BG pour la sem 52).
Voici un bout du code qui fonctionne parfaitement écrit par Mercatog, mille mercis.
Le souci est lorsque le stage commence par exemple en novembre et se termine en janvier, dans ce cas le numéro de la semaine fin est supérieur à celle de début.
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 'j compteur de ligne débute en 4 dans la feuille planning For j = 4 To LastLig 'date de début en colonne D v_date_stage = CDate(.Range("D" & j).Value) 'date fin en colonne F v_date_fin_stage = CDate(.Range("F" & j).Value) 'N° semaine de de début v_sem_deb = DatePart("ww", v_date_stage, vbMonday, vbFirstFourDays) 'N° semaine fin v_sem_fin = DatePart("ww", v_date_fin_stage, vbMonday, vbFirstFourDays) 'on écrit en E le n° semaine de début .Range("E" & j).Value = v_sem_deb 'on écrit en G le n° semaine de fin .Range("G" & j).Value = v_sem_fin 'On boucle et en remplit (semaine 1 en colonne 8:H 'If v_sem_deb > v_sem_fin Then For i = v_sem_fin To v_sem_deb 'j'ai essayé ce test mais bof ! .Cells(j, 7 + i).Value = Left(.Range("C" & j).Value, 1) 'Si le service est colorié en colonne C, 'cette couleur sera reportée dans le planning .Cells(j, 7 + i).Interior.Color = .Range("C" & j).Interior.Color Next i Else For i = v_sem_deb To v_sem_fin .Cells(j, 7 + i).Value = Left(.Range("C" & j).Value, 1) 'Si le service est colorié en colonne C, 'cette couleur sera reportée dans le planning .Cells(j, 7 + i).Interior.Color = .Range("C" & j).Interior.Color Next i 'End If Next j
Merci encore pour votre aide.
Chris
Partager