IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Limite 3 tris successifs en vba?


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut Limite 3 tris successifs en vba?
    Bonjour,

    j'ai un fichier sur lequel j'aimerais effectuer 6 tris successifs (6 clés de tris) sur les colonnes, et quand je code ça en vba, les 3 premiers tris successifs marchent très bien, mais à partir du moment où je rajoute une quatrième clé, le message "Erreur de compilation : argument nommé introuvable" apparait.
    J'ai l'impression que ca vient du fait que ce soit un quatrième critère de tri, car quand je mets ce critère en 3è (et sans 4è critère), le tri marche, donc ca ne vient pas du critère.

    Voici mon code :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Sub tri2()
     
        Dim nb As Integer
        nb = Application.WorksheetFunction.CountA(Range("A:A"))
     
        Dim plage As Excel.Range
        Set plage = Sheets(31).Range(Cells(2, 1), Cells(nb, 38))
     
        plage.Sort key1:=Range(Cells(2, 3), Cells(nb, 3)), Order1:=xlAscending, _
        key2:=Range(Cells(2, 20), Cells(nb, 20)), order2:=xlAscending, _
        key3:=Range(Cells(2, 1), Cells(nb, 1)), order3:=xlDescending, _
        key4:=Range(Cells(2, 16), Cells(nb, 16)), order4:=xlDescending
     
     
    End Sub
    Est-ce que le nombre de critères de tri est limité en vba? Parce que avec la fonction normale de tri on peut réaliser les 6 critères de tri successif.
    Ou alors y a-t-il une erreur dans mon code dont je ne me rends pas compte?

    Merci pour votre aide.

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    L'astuce est d'ajouter une colonne où tu concatène tes 6 colonnes de critères, tu tri sur cette colonne ajoutée et ensuite tu la supprime.

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, voir limites pour 2003 2007

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9
    Par défaut
    @Mercatoq : je ne comprends pas trop comment la concaténation va aider parce que mes critères ne sont pas du même type, et en plus il y a des tris croissants et décroissants. Tu pourrais m'expliquer stp?

    @kiki29 : merci pour la liste des limites, je cherchais en fait une solution =)

  5. #5
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub tri2()
    Dim LastLig As Long
     
    With Worksheets("Feuil1")
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
        With .Range("AM2:AM" & LastLig) 'En colonne AM on concatène les colonnes avec tri croissant (Pour cet exemple, il s'agit des colonnes C et T
            .Formula = "=C2 &""|""&T2"
            .Value = .Value
        End With
        With .Range("AP2:AP" & LastLig) 'En colonne AP on concatène les colonnes avec tri décroissant (Pour cet exemple, il s'agit des colonnes A et P
            .Formula = "=A2 &""|""&P2"
            .Value = .Value
        End With
        .Range("A2:AP" & LastLig).Sort Key1:=.Range("AM2"), Order1:=xlAscending, Key2:=.Range("AP2"), order2:=xlDescending, Header:=xlNo
        .Range("AM1:AP1").EntireColumn.Delete
    End With
    End Sub

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour


    Si tu utilises une version antérieure à 2007 il est également possible de faire 2 tris successifs : un avec les 3 critères de poids inférieur (donc les 4ème, 5ème et 6ème) puis un second tris avec les 3 critères de poids fort.

    C'est valable en manuel comme en macro.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Macro VBA pour tri successif de lignes
    Par thierryakaguy dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/07/2009, 23h27
  2. Tris successifs TStringGrid
    Par dennler dans le forum Langage
    Réponses: 5
    Dernier message: 03/03/2008, 19h40
  3. executer une règle de tri outlook par VBA
    Par benpinta dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 06/12/2007, 18h47
  4. [SQL] Tris successifs avec un limit
    Par LestoK dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 03/08/2007, 10h47
  5. [SQL] Limitation avec tri
    Par navis84 dans le forum Oracle
    Réponses: 30
    Dernier message: 03/10/2006, 13h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo