Sub Tri()
Dim tablo, i&, s, j%, maxi%
Application.ScreenUpdating = False
With [A1].CurrentRegion
tablo = .Columns(1).Resize(.Rows.Count + 1) 'matrice, plus rapide, au moins 2 éléments
'---détermination de la taille maximum---
For i = 2 To UBound(tablo) - 1
s = Split(tablo(i, 1), ".")
For j = 0 To UBound(s)
If Len(s(j)) > maxi Then maxi = Len(s(j))
Next j, i
'---ajout des zéros pour avoir des tailles identiques---
For i = 2 To UBound(tablo) - 1
s = Split(tablo(i, 1), ".")
For j = 0 To UBound(s)
s(j) = Format(Val(s(j)), String(maxi, "0"))
Next j
If j Then tablo(i, 1) = Join(s, ".")
Next i
'---1ère restitution et tri---
.Columns(1) = tablo
.Sort .Columns(1), xlAscending, Header:=xlYes
'Exit Sub 'activer si l'on veut voir les zéros
'---suppression des zéros inutiles---
tablo = .Columns(1).Resize(.Rows.Count + 1) 'matrice, plus rapide, au moins 2 éléments
For i = 2 To UBound(tablo) - 1
s = Split(tablo(i, 1), ".")
For j = 0 To UBound(s)
s(j) = Val(s(j))
Next j
If j Then tablo(i, 1) = Join(s, ".")
Next i
'---2ème restitution---
.Columns(1) = tablo
End With
End Sub