Sub triArr2()
Dim i&, j, Nb, temp, Pl As Range
Set Pl = Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
Dim tablo()
ReDim Preserve tablo(1 To Pl.Rows.Count)
For i = 1 To Pl.Rows.Count
If Val(Pl(i)) = Pl(i) Then
tablo(i) = Val(Pl(i))
Else
For j = 1 To Len(Replace(Pl(i), Val(Pl(i)), ""))
Nb = Nb & Asc(Mid(Replace(Pl(i), Val(Pl(i)), ""), j, 1))
Next j
tablo(i) = Val(Pl(i)) + Nb / 10 ^ Len(Nb): Nb = ""
End If
Next i
temp = tablo
Call tri(temp, LBound(temp), UBound(temp))
For i = 1 To Pl.Rows.Count
temp(i) = Pl(Application.Match(temp(i), tablo, 0))
Next i
[A2].Resize(UBound(temp)) = Application.Transpose(temp)
End Sub
Sub tri(a, gauc, droi) ' Quick sort
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
g = g + 1
d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub