Bonjour le fil, bonjour le forum,
Beaucoup de variables à adapter dans le code ci-dessous car tu n'as pas daigné préciser où se trouvait la plage des données...
Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim COL As Integer 'déclare la variable COL (COLonne)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim T As String 'déclare la variable O (variable Temporaire)
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter a ton cas)
COL = 1 'définit la colonne où se trouvent les données (à adapter à ton cas)
PL = 1 'définit la première ligne où commencent les données (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, COL).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne COL de l'onglet O
TV = O.Range(O.Cells(PL, COL), O.Cells(DL, COL)) 'définit le tableau des valeurs TV
For I = 1 To UBound(TV, 1) 'boucle 1 : sur toutes les lignes I du tableau des valeurs TV
For J = 1 To UBound(TV, 1) 'boucle 2 : sur toutes les lignes I du tableau des valeurs TV
'condition : si le troisième caractère de TV(I, 1) est supérieur au troisième caractère de TV(J, 1) que I est différent de J
If Mid(TV(I, 1), 3, 1) < Mid(TV(J, 1), 3, 1) And I <> J Then
T = TV(I, 1): TV(I, 1) = TV(J, 1): TV(J, 1) = T 'inverse les données en utilisant la variable T
End If 'fin de la condition
Next J 'prochaine ligne de la boucle 2
Next I 'prochaine ligne de la boucle 1
'renvoie dans la cellule redimensionnée ligne PL colonne COL de l'onglet O le tableau TV (trié)
O.Cells(PL, COL).Resize(UBound(TV, 1), 1).Value = TV
End Sub
la prochaine fois le fichier nous sera bien plus utile qu'une capture d'écran !...