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

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

  • Classer une tableau.xlsx
    9.4 KB · Affichages: 4
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...

ninbihan

XLDnaute Impliqué
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
 

sum01

XLDnaute Occasionnel
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
 

Gégé-45550

XLDnaute Accro
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

  • Classer une tableau (GG).xlsx
    16.4 KB · Affichages: 5

sum01

XLDnaute Occasionnel
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
 

Discussions similaires

Réponses
55
Affichages
3 K

Statistiques des forums

Discussions
313 197
Messages
2 096 113
Membres
106 501
dernier inscrit
axtion