Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim nb As Byte 'déclare la variable nb (NomBre)
Dim nom As String 'déclare la variable nom
With Sheets("Feuil1") 'prend en compte l'onglet "Feuil1"
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 1 (=A)
Set pl = .Range("A2:A" & dl) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "Feuil1"
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
nb = Application.WorksheetFunction.CountIf(pl, cel.Value) 'définit le nombre d'occurrences de la valeur de la cellule cel dans la plage pl
If cel.Offset(1, 0).Value = cel.Value Then 'condition : si la valeur de la cellule en dessous est égale à la valeur de de la cellule cel
nom = IIf(nom = "", cel.Offset(0, 1).Value, nom & ", " & cel.Offset(0, 1).Value) 'définit le nom
Else 'sinon
nom = IIf(nom = "", cel.Offset(0, 1).Value, nom & ", " & cel.Offset(0, 1).Value) 'définit le nom
cel.Offset(-(nb - 1), 2).Value = nom 'place le nom sur la première ligne
nom = "" 'réinitialise le nom
End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
End Sub