Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim I As Byte 'déclare la variable I (Incrément)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim COL As Integer 'déclare la variable COL (COLonne)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CR As Integer 'déclare la variable CR (Colonne de Référence)
Dim LR As Integer 'déclare la variable LR (Ligne de Référence)
If Target.Address <> "$D$1" Then Exit Sub 'si la changement a lieu ailleurs qu'en D1, sort de la procédure
For I = 1 To 12 'boucle 1 : sur les 12 mois
Set O = Worksheets(CStr(I)) 'définit l'onglet O
COL = O.Rows(6).Find(Target.Value, , xlValues, xlWhole).Column 'définit la colonne COL (recherche l'animateur dans la ligne 6 de l'onglet O)
Set PL = O.Range(O.Cells(7, COL), O.Cells(37, COL)) 'définit la plage PL (tous les jours du mois)
Select Case I 'agit en fonction de I
Case 1 To 6 'de 1 à 6
CR = 4 * I 'définit la colonne de référence (I x 4)
LR = 3 'définit la ligne de référence
Case 7 To 12 'de 7 à 12
CR = (4 * I) - 24 'définit la colonne de référence (I x 4) - 24
LR = 36 'définit la ligne de référence
End Select 'fin de l'action en fonction de I
For LI = 1 To PL.Rows.Count 'boucle 2 : sur toutes les lignes LI de la plage PL
'si la donnée ligne LI colonne 1 de PL n'est pas vide, renvoie sa valeur dans la cellule ligne : LR + LI -1, colonne CR du planning
If PL(LI, 1) <> "" Then Me.Cells(LR + LI - 1, CR).Value = PL(LI, 1).Value
Next LI 'prochaine ligne de la boucle 2
Next I 'prochain mois de la boucle 1
End Sub