Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…