Sub Tri()
Dim Tablo, TabCol(), Col, Ck, Ci
Dim x As Long, k As Long, y As Long, m As Long, q As Long, j As Long, n As Long
Set Col = CreateObject("Scripting.Dictionary")
Application.ScreenUpdating = False
With Sheets("famille-produit")
Tablo = .Range("A2:C" & .Range("A65536").End(xlUp).Row)
For x = 1 To UBound(Tablo)
If Not Col.Exists(Tablo(x, 3)) Then
Col.Add Tablo(x, 3), 1
Else
temp = Col.Item(Tablo(x, 3))
Col.Remove Tablo(x, 3)
Col.Add Tablo(x, 3), temp + 1
End If
Next x
Ck = Col.keys
Ci = Col.items
For k = LBound(Ci) To UBound(Ci)
ReDim Preserve TabCol(1, 1 To k + 1)
TabCol(0, k + 1) = Ck(k)
TabCol(1, k + 1) = Ci(k)
Next
y = 2
j = 2
For m = 1 To UBound(TabCol, 2)
For q = 1 To UBound(Tablo)
If TabCol(0, m) = Tablo(q, 3) Then
.Range("G" & y) = Tablo(q, 1)
.Range("H" & y) = Tablo(q, 2)
For n = 1 To UBound(Tablo)
If Tablo(n, 3) = Tablo(q, 3) Then
If Tablo(n, 2) <> Tablo(q, 2) Then
.Range("I" & j) = Tablo(n, 2)
j = j + 1
End If
End If
Next
y = y + (TabCol(1, m) - 1)
End If
Next
Next
End With
Application.ScreenUpdating = True
End Sub