Tri automatique avec liste de tri personnalisée

Résolu
Bonjour,

J'utilise Excel 2016 et je veux trier automatiquement un tableau selon une colonne qui contient différent "STATUT" en lien avec chaque lignes. J'ai déjà fait une liste de tri personnalisée qui me permet de trier ces "STATUT" selon l'ordre désiré, mais j'aimerais que ce tri s'effectue automatiquement lorsque j'ajoute de nouvelles lignes ou modifie un information. Je sais que je dois utiliser une macro VBA et j'ai trouvé des solutions pour classer en ordre croissant ou décroissant, mais je n'ai pas trouvé comment le faire avec une liste personnalisée. Si possible, j'aimerais peut-être même ajouter une second niveau de tri. Le premier tri serais donc ma liste personnalisée pour une colonne "X" et un second tri alphabétique sur une colonne "Y".

Merci de bien vouloir m'aider...

Olivier Jean

2 réponses

  1. Bonjour,

    As-tu essayé d'utiliser l'enregistreur de macros pour obtenir le code correspondant à ton tri ?

    A+
    1
    1. Je viens tout juste de l'essayer...je réussi à enregistrer et exécuter ma macro en allant dans l'onglet développeur/Macros et j'Exécute ma macro que j'ai préalablement enregistrée, mais je sais pas comment faire pour que cela se fasse dès que je change un info ou double clique une cellule...
      0
    2. @oli_jean9il faudrait que tu montres ta macro.

      A+
      0
    3. Sub TRI()
      '
      ' TRI Macro
      ' Tri automatique
      '

      '
      Range("B10:L26").Select
      ActiveWorkbook.Worksheets("CÉDULE").Sort.SortFields.Clear
      ActiveWorkbook.Worksheets("CÉDULE").Sort.SortFields.Add Key:=Range("E10:E26") _
      , SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
      "NON-AUTORISÉ,AUTORISÉ,CHEMINS EN COURS,PRÊT POUR RÉCOLTE,RÉCOLTE EN COURS,FINI ATT. INVENTAIRES,FERMETURE EN COURS,FERMÉ" _
      , DataOption:=xlSortNormal
      ActiveWorkbook.Worksheets("CÉDULE").Sort.SortFields.Add Key:=Range("D10:D26") _
      , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
      With ActiveWorkbook.Worksheets("CÉDULE").Sort
      .SetRange Range("B10:L26")
      .Header = xlGuess
      .MatchCase = False
      .Orientation = xlTopToBottom
      .SortMethod = xlPinYin
      .Apply
      End With
      End Sub
      0
    4. Merci je viens de réussir!!
      0