Bonjour,
Une piste avec le résultat 10 lignes plus bas que la plage. Pour le noir, il manquait Jean-Marc :
Sub Dico()
Dim PlageV As Range
Dim PlageH As Range
Dim CelV As Range
Dim CelH As Range
Dim Dico As Object
Dim Cle As Variant
Dim I As Integer
Set Dico = CreateObject("Scripting.Dictionary")
With ActiveSheet: Set PlageV = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
For Each CelV In PlageV
With ActiveSheet: Set PlageH = .Range(.Cells(CelV.Row, 2), .Cells(CelV.Row, 6)): End With
For Each CelH In PlageH
If CelH.Value <> "" Then Dico(CelH.Value) = Dico(CelH.Value) & CelV.Value & ", "
Next CelH
Next CelV
I = PlageV.Rows.Count + 10 'résultat 10 lignes plus bas
For Each Cle In Dico.Keys
Cells(I, 1).Value = Cle
Cells(I, 2).Value = Left(Dico(Cle), Len(Dico(Cle)) - 2) 'supprime la virgule et l'espace de fin
I = I + 1
Next Cle
End Sub