Bonjour, eclipse
et :
regarde le fichier joint...
Le code :
Sub concat()
Dim Uniques As Object, Cel As Range 'déclaration des variables
Dim Nbr As Integer, Lig As Long, I As Integer
Set Uniques = CreateObject("Scripting.Dictionary") 'on déclare l'object Uniques
Range("A1:A" & [A65000].End(xlUp).Row).Name = "Plg" 'on détermine la plage de travail
For Each Cel In [Plg] 'pour chaque cellule dans la plage
If Not Uniques.Exists(Cel.Value) Then Uniques.Add Cel.Value, Cel.Value 'si la valeur
Next Cel ' de la cellule n'est pas encore dans l'objet Uniques, on la met
[D1].Resize(Uniques.Count, 1).Value = Application.Transpose(Uniques.items) 'on copie la liste de l'objet
'à partir de la cellule D1
For Each Cel In Range("D1:D" & [D65000].End(xlUp).Row) 'pour chaque cellule dans la colonne D
Lig = Application.Match(Cel, [Plg], 0) 'on cherche sa ligne dans la plage
Nbr = Application.CountIf([Plg], Cel.Value) 'on cherche le nombre de fois ou elle apparait
Cel.Offset(0, 1).Value = Cells(Lig, 2).Value 'à droite, on met la 1ère valeur
For I = 1 To Nbr - 1 'puis on continue en fonction du nombre de fois
Cel.Offset(0, 1).Value = Cel.Offset(0, 1).Value & ", " & Cells(Lig + I, 2).Value
Next I
Next Cel
End Sub
le fichier :
https://www.excel-pratique.com/~files/doc/eclipse_v1.xls