Sub Macro1()
Dim OP As Worksheet 'déclare la variable OP (Onglet Présence semaine)
Dim OS As Worksheet 'déclare la variable OS (Onglet S48)
Dim COL As Byte 'déclare la variable COL (COLonne)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim L As String 'déclare la variable L (Liste)
Dim PL As Range 'déclare la variable PL (PLage)
Set OP = Worksheets("Présence semaine") 'définit l'onglet OP
Set OS = Worksheets("S48") 'définit l'onglet OS
For COL = 1 To 5 'boucle 1 : sur les colonnes COL de 1 à 5
L = "" 'vide la liste L
DL = OP.Cells(Application.Rows.Count, COL).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne COL de l'onglet OP
For I = 5 To DL 'boucle 2 : sur toutes les lignes I de à DL
L = IIf(L = "", OP.Cells(5, COL).Value, L & "," & OP.Cells(I, COL))
Next I 'prochaine ligne de la boucle
Set PL = OS.Columns(COL + 3).SpecialCells(xlCellTypeAllValidation) 'définit la plage PL (cellule ayant une validation de donnée dans la colonne COL)
With PL.Validation 'prend en compte la plage PL
.Delete 'efface une éventuelle validation de données existante
.Add xlValidateList, Formula1:=L 'ajoute la liste L comme liste de validation de données
End With 'fin de la prise en compte de la plage PL
Next COL 'prochane colonne de la boucle
End Sub