VBA [Excel 2003] Tri pas croissant pas décroi

Résolu
Bonjour,

Voila mon problème, je souhaite faire un tri personnaliser de mon tableau ni croissant ni décroissant. J'ai lu pas mal de truc mais les solutions que j'ai trouvé sont applicable
à Excel 2007 pas à 2003. Comme le trie personnalisé par liste.

Je voudrai donc trier mon tableau A8:H40 en fonction de la colonne I:I (critères) sur la colonne H.

Quelqu'un aurai une idée?

Merci d'avance.

4 réponses

  1. Bonjour,

    1) Outils/Options/Liste pers. /Importer la liste des cellules : $I$2:$I$7
    2) Données/Trier../Trier par : colonne H - Options, Premièreclé de l'ordre de tri : GL,LK, ...
    3
    1. Merci c'est exactement ce que je cherchais
      0
    2. De rien, au plaisir de relire sur le forum

      Cordialement
      Patrice

      PS : Avec Excel 2007 :
      1) Bouton Office / Options Excel / Standard / Modifier les listes personnalisées / Importer la liste des cellules : $I$2:$I$7
      2) Accueil / Trier et Filtrer / Tri personnalisé / Trier par : colonne H - Ordre : Liste personnalisée : GL, LK, ...
      0
  2. Bonjour

    Je pense que tu arrive a le faire manuellement? En selectionnant ton tableau et en faisant clic droit > trier > personnalisé
    Ensuite tu sélectionne ta colonne de tri et le tour est joué....

    Pour l'importer sur VBA, ne voulant pas dire de bétise et ne connaissant que les formule 2007.
    Je te conseil de faire un enregistrement de macro et ensuite de faire la manipulation cité ci dessus! du coup tu aura la synthaxe et tu n'auras plus qu'a ajuster ta formule
    0
    1. Merci de ta réponse si rapide, mais dans le clic droit sous 2003 il n'y a pas la fonction tri. J'ai essayé de trouver un tri personnalisé quelque part mais je ne le trouve pas.
      0
    2. Exacte mais il n'y a pas de fonction personnalisé. j'ai cherché aussi dans le bouton option mais toujours rien.
      0
    3. Je crois que j'ai mal compris la question alors .....

      A quoi te sert ton tri? un tri pour moi c'est pour classé quelque chose dans un certain ordre.... donc croissant ou décroissant...

      Quel est exactement le tri que tu souhaite sur ta colonne H?
      0
  3. Mon tri doit s'effectuer en fonction de la colonne I.

    Exemple de la colonne I

    GJ
    LK
    TOR
    BS
    SD
    VS

    Donc je voudrai que ma colonne H sois trié dans cette ordre là.
    0
    1. Mais donc tu va bien trié une des deux colonne dans un ordre croissant ou décroissant....?
      Ou alors je suis largué?
      0
    2. non pas du tout.
      Dans la colonne H j'ai un truc du style:
      GJ
      GJ
      LK
      TOR
      LK
      TOR
      BS
      SD
      GJ
      LK
      TOR
      GJ
      LK
      TOR
      BS
      SD
      VS

      Et je voudrai que ce soit trié comme ça:
      GJ
      GJ
      GJ
      GJ
      LK
      LK
      LK
      LK
      TOR
      TOR
      TOR
      TOR
      BS
      BS
      SD
      SD
      VS
      0
    3. Comment tu rajoutes tes ligne dans ton tableau? tu utilises un Userform?

      Maintenant que j'ai tout compris a ce que tu demande je vais te faire le programme ^^ j'y tiens comme je t'ai fais galérer :D

      Je repasse quand j'ai fini
      0
  4. Dis moi ce que tu en penses....

    Je ne trie la colonne H et je déplace toute la ligne en question et non juste la colonne I
    Si tu voulais juste deplacé la colonne I il y a juste a ajuster le code!

    Public Sub tri()  
        Dim Nb_LigneTot, i, j As Integer  
          
        Nb_LigneTot = Columns(8).Find("*", , , , xlByColumns, xlPrevious).Row  
          
    'La première ligne reste inchangée dans tous les cas donc je commence a i=2  
    'Il fautdra bien sur commencer a i = 3  et j = 2 si il y a une ligne d'entete, pour le reste de la macro rien ne change  
        For i = 2 To Nb_LigneTot  
            For j = 1 To i - 1  
                If Cells(i, 8).Value = Cells(j, 8).Value And Cells(i).Value <> Cells(j + 1, 8).Value And j <> i - 1 Then  
                    Rows(i).Select  
                    Selection.Cut  
                    Rows(j + 1).Select  
                    Selection.Insert Shift:=xlDown  
                End If  
            Next j  
        Next i  
    End Sub
    0
    1. Merci beaucoup mais je trouve cette solution pas très "safe". Je vais essayer de faire une macros avec les infos données pas Patrice33740.
      0
    2. Ok pas de soucis :D elle marche dans tous les cas pourtant

      Comme je connais pas Excel 2003 j'avoue que je ne peux faire que te donner du VBA.

      Patrice33740 à l'air de mieux Excel 2003 et donc pourra surement plus t'aider sans utiliser mon code VBA ..

      Enfin au cas ou tu as toujours le code qui marche :) sachant que tu avoir 20 000 ligne cela marchera sans rien touché au code. Le problème est juste que je pense que si la qantité augmente le temps d'éxécution augmentera
      0