XL 2019 Trier un tableau en fonction de critères définis

  • Initiateur de la discussion Initiateur de la discussion sum01
  • 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 !

sum01

XLDnaute Occasionnel
Bonsoir le Forum,

Petit problème que je ne parviens pas à gérer en VBA ou par une formule.
Dans un tableau Excel, j'ai inséré des lignes produits qui sont associées à un compte (colonne H). Je cherche un moyen pour trier ce tableau en fonction d'un ordre à respecter. Cet ordre est déterminé dans la colonne O. Autrement dit, le tableau doit être classé en fonction de l'ordre établi dans la colonne O. J'ai représenté le résultat dans le 2ème tableau mais je ne parviens pas à solutionner ce problème en VBA ou par une formule.
Cette astuce est nécessaire car je ne reçois pas le fichier dans le bon ordre ce qui me pose d'autres problèmes par la suite.

Merci pour votre aide et bonne soirée
 

Pièces jointes

Solution
Bonsoir le forum, sum 01

En passant par données/trier/ordre personnalisé et créer sa liste personnalisée
Avec l'enregistreur de macro cela donne :

VB:
Sub Macro1()

    Range("A2:H6").Select
    Application.AddCustomList ListArray:=Array("456 C0", "4567 V2", "567 D0", "456 E0")
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add2 Key:=Range("H2:H6") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "456 C0,4567 V2,567 D0,456 E0", DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("A1:H6")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom...
Bonsoir le forum, sum 01

En passant par données/trier/ordre personnalisé et créer sa liste personnalisée
Avec l'enregistreur de macro cela donne :

VB:
Sub Macro1()

    Range("A2:H6").Select
    Application.AddCustomList ListArray:=Array("456 C0", "4567 V2", "567 D0", "456 E0")
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add2 Key:=Range("H2:H6") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "456 C0,4567 V2,567 D0,456 E0", DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("A1:H6")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 
Bonsoir le forum, sum 01

En passant par données/trier/ordre personnalisé et créer sa liste personnalisée
Avec l'enregistreur de macro cela donne :

VB:
Sub Macro1()

    Range("A2:H6").Select
    Application.AddCustomList ListArray:=Array("456 C0", "4567 V2", "567 D0", "456 E0")
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add2 Key:=Range("H2:H6") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "456 C0,4567 V2,567 D0,456 E0", DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("A1:H6")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
Bonsoir ninbihan,
Excellent merci pour votre réponse. En effet, je découvre avec vous le filtre personnalisé. C'est génial et pourra me servir à de maintes occasions maintenant.
Encore merci et bonne soirée
 
Bonsoir le Forum,

Petit problème que je ne parviens pas à gérer en VBA ou par une formule.
Dans un tableau Excel, j'ai inséré des lignes produits qui sont associées à un compte (colonne H). Je cherche un moyen pour trier ce tableau en fonction d'un ordre à respecter. Cet ordre est déterminé dans la colonne O. Autrement dit, le tableau doit être classé en fonction de l'ordre établi dans la colonne O. J'ai représenté le résultat dans le 2ème tableau mais je ne parviens pas à solutionner ce problème en VBA ou par une formule.
Cette astuce est nécessaire car je ne reçois pas le fichier dans le bon ordre ce qui me pose d'autres problèmes par la suite.

Merci pour votre aide et bonne soirée
Bonsoir,
Une proposition en PJ.
Cordialement,
 

Pièces jointes

Bonsoir le forum, sum 01

En passant par données/trier/ordre personnalisé et créer sa liste personnalisée
Avec l'enregistreur de macro cela donne :

VB:
Sub Macro1()

    Range("A2:H6").Select
    Application.AddCustomList ListArray:=Array("456 C0", "4567 V2", "567 D0", "456 E0")
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add2 Key:=Range("H2:H6") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
        "456 C0,4567 V2,567 D0,456 E0", DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("A1:H6")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
Bonjour,
Merci pour votre réponse. C’est très astucieux. Je ne pense pas toujours à l’enregistreur qui est pourtant un puissant outil.
Bonne journée à vous
 
- 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
3
Affichages
131
Réponses
2
Affichages
188
Retour