Sub Trier()
Dim tablo, a$(), i&, t$
tablo = Range("A1:A2", Range("A" & Rows.Count).End(xlUp)) 'au moins 2 éléments
ReDim a(1 To UBound(tablo))
For i = 1 To UBound(a)
t = tablo(i, 1)
If t = "" Then
a(i) = "zzzzzzzzz" 'pour placer à la fin
ElseIf IsNumeric(Left(t, 1)) Then
a(i) = String(9 - Len(CStr(Val(t))), "0") & t 'augmenter le 9 si nécessaire
Else: a(i) = t: End If
Next
tri a, tablo, 1, UBound(a)
[A1].Resize(UBound(a)) = tablo
End Sub
Sub tri(a, b, gauc, droi) ' Quick sort
Dim ref, g, d, temp
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
temp = b(g, 1): b(g, 1) = b(d, 1): b(d, 1) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, b, g, droi)
If gauc < d Then Call tri(a, b, gauc, d)
End Sub