Bonjour X.L, Bonjour Chris
Pour enrichir, autre possibilité
Sub test()
Dim mat As Object
Range("A1").CurrentRegion.Offset(0, 1).ClearContents
prod = Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).Value
Set mat = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(prod)
Tbl = Split(prod(i, 1) & "|", "|")
For j = 0 To UBound(Tbl) - 1
mat(Split(Split(Tbl(j), "~")(1), ("="))(0)) = ""
Next
Next
Tbl = mat.keys
QuickSort Tbl
mat.RemoveAll
For i = LBound(Tbl) To UBound(Tbl)
mat(Tbl(i)) = i
Next i
col = 2
For Each cle In mat.keys
Cells(1, col) = cle '& mat(cle)
col = col + 1
Next
For i = 1 To UBound(prod)
Tbl = Split(prod(i, 1) & "|", "|")
For j = 0 To UBound(Tbl) - 1
col = mat(Split(Split(Tbl(j), "~")(1), ("="))(0))
Cells(i + 1, col + 2) = Split(Split(Tbl(j), "=")(1), ("%"))(0) & " %"
Next
Next
End Sub