Sub Unique_Sorted_ComboList(CbList As msforms.ComboBox, rg As Range)
Dim Dict
Dim c As Range
Dim i As Long, j As Long
Dim arrList As Variant, vTemp As Variant
Dim mots, s As String
'Créer une liste des valeurs unique avec un dictionnaire
Set Dict = CreateObject("Scripting.Dictionary")
Dict.CompareMode = vbTextCompare
For Each c In rg
If Not IsEmpty(c.Value) And Not Dict.exists(c.Value) Then
mots = Split(c.Value): s = mots(UBound(mots))
ReDim Preserve mots(UBound(mots) - 1)
s = Join(mots) & String(10 - Len(s), "0") & s
Dict.Add s, c.Value
End If
Next c
'Trier la liste
arrList = Dict.keys
For i = LBound(arrList) To UBound(arrList) - 1
For j = i + 1 To UBound(arrList, 1)
If arrList(i) > arrList(j) Then
vTemp = arrList(i)
arrList(i) = arrList(j)
arrList(j) = vTemp
End If
Next j
Next i
'Remplir la combobox avec des valeurs unique triées
CbList.Clear
For i = 0 To Dict.Count - 1
CbList.AddItem Dict(arrList(i))
Next i
End Sub