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

Microsoft 365 Tri Nombre avec Tirets en VBA

  • Initiateur de la discussion Initiateur de la discussion eric72
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

eric72

XLDnaute Accro
Bonjour,
J'ai un tableau avec des nombres (code article) ex: 2400 puis d'autres avec ex: 2400-1, 2400-3, 2400-18 etc...
J'aimerais faire un tri par macro pour tous les nombres et arriver au résultat suivant:
2400
2400-1
2400-3
2400-18
Malheureusement le résultat n'est pas au rendez-vous, raison pour laquelle je fais appel à votre savoir, vous les chamions pour résoudre ce genre de problèmes.
Merci beaucoup pour votre aide.
Cordialement.
Eric
 
Bonjour,

Il me semble pourtant que c'est le résultat que donne le tri d'Excel, simplement en utilisant le tri croissant de la colonne B de ton fichier de #2. Non ? 🤔

En tout cas, c'est ce que semble me donner Excel 2016 sous Windows 10 1902.


[edit]
Après avoir relu la question de #1, c'est visiblement l'inverse que tu voulais dire, et du coup je comprends mieux le problème.

Tu veux en fait un tri un peu particulier qu'il faudrait faire en deux étapes : d'abord un tri sur la partie après le tiret, puis un tri sur la partie avant le tiret.
[/edit]
 
Dernière édition:
En partant de ton fichier de #2,

de même que tu as créé une colonne "Colonne1" en colonne D avec la formule
Code:
=GAUCHE([@[Code Article]];4)

tu crées une colonne "Colonne2" en colonne E avec la formule
Code:
=SIERREUR(DROITE("000000" & STXT([@[Code Article]];CHERCHE("-";[@[Code Article]])+1;999);6);"")


Tu peux masquer les deux colonnes D et E. 😉


Tu crées un bouton pour lancer le tri, et tu lui associes cette macro :
VB:
Sub TriSpecial()
'
    Application.ScreenUpdating = False

    With ActiveWorkbook.Worksheets("Référencement").ListObjects("TbReferencement").Sort

        .SortFields.Clear
        .SortFields.Add Key:=Range("TbReferencement[[#All],[Colonne2]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply

        .SortFields.Clear
        .SortFields.Add Key:=Range("TbReferencement[[#All],[Colonne1]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply

        .SortFields.Clear
    End With

    Application.ScreenUpdating = True

End Sub
 
Bonsoir à tous,

Une seule formule en colonne1 devrait le faire pour le tri:
VB:
=GAUCHE([@[Code Article]];5) & REPT(0;3-NBCAR(STXT([@[Code Article]];6;9))) & STXT([@[Code Article]];6;9)
 
Bonjour à tous

Ou
VB:
=GAUCHE([@[Code Article]];CHERCHE("-";[@[Code Article]]))&TEXTE(STXT([@[Code Article]];CHERCHE("-";[@[Code Article]])+1;5);"000")
ou
Code:
=GAUCHE([@[Code Article]];5)&TEXTE(STXT([@[Code Article]];6;5);"000")
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
22
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…