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
18
Affichages
752

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 977
dernier inscrit
Hermet