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.
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
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.

Merci encore pour votre aide.
Chris