Private Sub UserForm_Initialize()
Dim temp()
Set F = Sheets("Listes")
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In F.Range("x1:x" & F.[x65000].End(xlUp).Row)
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me.ComboBox1.List = temp
End Sub
Sub Tri(x(), gauc, droi)
ref = x((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While x(g) < ref: g = g + 1: Loop
Do While ref < x(d): d = d - 1: Loop
If g <= d Then
temp = x(g): x(g) = x(d): x(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(x, g, droi)
If gauc < d Then Call Tri(x, gauc, d)
End Sub