Sub test()
Dim plage As Range, i&, x&, t$, t2
Set plage = Range([B2], [B655335].End(xlUp)) 'la plage a trier
For i = 1 To plage.Cells.Count: t = t & plage.Cells(i).Text & ",": Next 'on conpile toute les valeurs dans un texte
t = Replace(t, " ", "") 'on suprime les espacesdans la variable (t)texte
t2 = Split(t, ",") 'on coupe le texte par les virgule (on a un array en base 0)
MsgBox "origninal " & vbCrLf & Replace(t, " ", "") 'msgbox de l'original
For i = 0 To UBound(t2) 'on boucle sur l'array
x = Application.Match(t2(i), t2, 0) 'on récupere l'index de position de chaque valeurs dans l'array
Debug.Print i & "-->" & x ' juste pour voir
'si l'index de position(x) est plus petit que i c'est que ce nombre est déjà passé (on le vire de la variable t avec sa virgule )
If x < i - 1 Then t = Replace(t, "," & t2(i) & ",", ",")
Next
MsgBox "résultat " & vbCrLf & t ' le résultat
End Sub