XL 2021 classer par nom mais en regardant les 18 dernieres lettre

cg1980

XLDnaute Occasionnel
Bonjour
j aimerais classer la colonne A sur le nom, mais au lieu de regarder le nom complet, je regarde uniquement les 18 dernieres lettre en partant de la droite (process recurrent, c est pour cela que je veux le faire via une macro)
merci de votre aide
 

Pièces jointes

  • test.xlsx
    8.9 KB · Affichages: 10
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re, bonjour @job75 ;),

Je me suis lâché pour innover🤪🙃:
Un code un peu farfelu mais qui devrait le faire :
VB:
Sub trier()
Dim der, t, i&, n&
   Application.ScreenUpdating = False
   der = Cells(Rows.Count, 1).End(xlUp).Row
   t = Range("a1:a" & der)
   For i = 1 To UBound(t): t(i, 1) = Right(t(i, 1), 18) & ">" & t(i, 1): Next
   Range("a1:a" & der) = t
   Range("a1:a" & der).Sort key1:=Range("a1"), order1:=xlAscending, Header:=xlNo
   t = Range("a1:a" & der)
   For i = 1 To UBound(t)
      n = InStrRev(t(i, 1), ">")
      If n Then t(i, 1) = Mid(t(i, 1), n + 1)
   Next
   Range("a1:a" & der) = t
End Sub
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
bonsoir
sinon le tri a bulle
VB:
Sub test()
    Dim Tblo, A&, B&, Temp$
    tablo = [A1].Resize(ActiveSheet.UsedRange.Rows.Count)
    MsgBox UBound(tablo)
    For A = 1 To UBound(tablo)
        For B = 1 To UBound(tablo)
            If Val(Mid(tablo(A, 1), Len(tablo(A, 1)) - 17)) < Val(Mid(tablo(B, 1), Len(tablo(B, 1)) - 17)) Then
                Temp = tablo(A, 1): tablo(A, 1) = tablo(B, 1): tablo(B, 1) = Temp
            End If
        Next
    Next
    [h1].Resize(UBound(tablo)) = tablo
End Sub
et ce n'est pas 18 mais 17
 

Discussions similaires

Réponses
9
Affichages
428

Statistiques des forums

Discussions
314 771
Messages
2 112 765
Membres
111 653
dernier inscrit
Vanie0082