@U.Milité, Furioussci, le fil,
j'avais aussi pensé a un dictionaire, mais je pensais que se serait plus vite avec instr (sans preuve).
il y avait encore un erreur dans ma macro (qu'on peut aussi changer en fonction personnalisée)
Sub SansDoublons()
Dim c, aA, i, j, s
Set c = Range("A1:A10")
aA = c.Value
For i = 1 To UBound(aA)
If Len(aA(i, 1)) > 0 Then
s = ";"
sp = Split(aA(i, 1), ";") 'spliter
For j = 0 To UBound(sp)
If InStr(1, s, ";" & sp(j) & ";", 1) = 0 Then s = s & sp(j) & ";" 'no doublons
Next
aA(i, 1) = Mid(s, 2, Len(s) - 2) 'eliminer le ";" prefix et suffix
End If
Next
c.Offset(, 1).Value = aA
End Sub