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 :

Faire un SORT avec 4 critère


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 155
    Par défaut Faire un SORT avec 4 critère
    Bonjour,

    J'ai enregistrer une macro pour faire un sort, ce qui me donne le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Columns("A:F").Select
    Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Key2:=Range("D1") _
    , Order2:=xlAscending, Key3:=Range("E1"), Order3:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
    xlSortNormal,
    Mais moi, ce que je veux vraiement c'est mettre 4 critères. Donc j'ai essayer de rajouter un Key4, un Order4 et un DataOption4 mais ca ne marche pas.

    Y-a-t-il une solution pour ce problème.

    Merci.

  2. #2
    Membre expérimenté Avatar de ilcocodrillo
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Âge : 18
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut copie de la page d'aide VBA
    DAns l'aide VBA il montre 3 argumùents et ne disent nul part que c'est limitatif... J'ai déjà eu ce problème il y a fort longtemps et je l'ai résolu en faisant plusieurs .sort de suite sur des plages consécutives, un peu lourd comme code mais c'est faisable.

    Sort, méthode
    Voir aussi S'applique à Exemple Spécificités
    Cette méthode trie un rapport de tableau croisé dynamique, une plage ou une région active si la plage spécifiée contient seulement une cellule.

    expression.Sort(Key1, Order1, Key2, Type, Order2, Key3, Order3, Header, OrderCustom, MatchCase, Orientation, SortMethod, DataOption1, DataOption2, DataOption3)

    expression Obligatoire. Expression qui renvoie un des objets répertoriés dans la liste S'applique à.

    Key1 Argument de type Variant facultatif. Premier champ de tri, sous forme de texte (un champ de tableau croisé dynamique ou un nom de plage) ou d'objet Range ("Dept" ou Cells(1, 1), par exemple).

    Order1 Argument de type XlSortOrder facultatif. Ordre de tri pour le champ ou la plage spécifiés dans l'argument Key1.

    XlSortOrder peut être l'une de ces constantes XlSortOrder.
    xlDescending. Trie l'argument Key1 en ordre décroissant.
    xlAscending par défaut. Trie l'argument Key1 en ordre croissant.

    Key2 Argument de type Variant facultatif. Second champ de tri, sous forme de texte (un champ de tableau croisé dynamique ou un nom de plage) ou d'objet Range. Si vous ne spécifiez pas cet argument, il n'y a pas de second champ de tri. Cet argument ne peut être utilisé lors du tri de rapports de tableau croisé dynamique.

    Type Argument de type Variant facultatif. Indique quels éléments doivent être triés. Utilisez cet argument uniquement lors du tri de rapports de tableau croisé dynamique.

    XlSortType peut être l'une de ces constantes XlSortType.
    xlSortLabels. Trie le rapport de tableau croisé dynamique par étiquettes.
    xlSortValues. Trie le rapport de tableau croisé dynamique par valeurs.

    Order2 Argument de type XlSortOrder facultatif. Ordre de tri pour le champ ou la plage spécifiés dans l'argument Key2. Cet argument ne peut être utilisé lors du tri de rapports de tableau croisé dynamique.

    XlSortOrder peut être l'une de ces constantes XlSortOrder.
    xlDescending. Trie l'argument Key2 en ordre décroissant.
    xlAscending par défaut. Trie l'argument Key2 en ordre croissant.

    Key3 Argument de type Variant facultatif. Troisième champ de tri, sous forme de texte (un nom de plage) ou d'objet Range. Si vous ne spécifiez pas cet argument, il n'y a pas de troisième champ de tri. Cet argument ne peut être utilisé lors du tri de rapports de tableau croisé dynamique.

    Order3 Argument de type XlSortOrder facultatif. Ordre de tri pour le champ ou la plage spécifiés dans l'argument Key3. Cet argument ne peut être utilisé lors du tri de rapports de tableau croisé dynamique.

    XlSortOrder peut être l'une de ces constantes XlSortOrder.
    xlDescending. Trie l'argument Key3 en ordre décroissant.
    xlAscending par défaut. Trie l'argument Key3 en ordre croissant.

    Header Argument de type XlYesNoGuess facultatif. Indique si la première ligne contient des en-têtes. Cet argument ne peut être utilisé lors du tri de rapports de tableau croisé dynamique.

    XlYesNoGuess peut être l'une de ces constantes XlYesNoGuess.
    xlGuess. Microsoft Excel détermine s'il existe un en-tête et, le cas échéant, son emplacement.
    xlNo par défaut. (La plage entière doit être triée).
    xlYes. (La plage entière ne doit pas être triée).

    OrderCustom Argument de type Variant facultatif. Cet argument est un entier en base un référencé vers la liste des ordres de tri personnalisés. Si vous ne spécifiez pas l'argument OrderCustom, un tri normal est effectué.

    MatchCase Argument de type Variant facultatif. Affectez-lui la valeur True pour effectuer un tri qui respecte la casse. Affectez-lui la valeur False pour effectuer un tri qui ne respecte pas la casse. Cet argument ne peut être utilisé lors du tri de rapports de tableau croisé dynamique.

    Orientation Argument de type XlSortOrientation facultatif. Orientation du tri.

    XlSortOrientation peut être l'une de ces constantes XlSortOrientation.
    xlSortRows par défaut. Trie par ligne.
    xlSortColumns. Trie par colonne.

    SortMethod Argument de type XlSortMethod facultatif. Type de tri. Certaines de ces constantes ne seront peut-être pas disponibles, en fonction de la langue sélectionnée ou installée (par exemple, le français).

    XlSortMethod peut être l'une de ces constantes XlSortMethod.
    xlStroke Tri basé sur la quantité de traits dans chaque caractère.
    xlPinYin par défaut. Ordre de tri phonétique chinois des caractères.

    DataOption1 Argument de type XlSortDataOption facultatif. Indique comment trier le texte dans la clé 1. Cet argument ne peut être utilisé lors du tri de rapports de tableau croisé dynamique.

    XlSortDataOption peut être l'une de ces constantes XlSortDataOption.
    xlSortTextAsNumbers. Traite le texte comme données numériques pour le tri.
    xlSortNormal par défaut. Trie les données numériques et textuelles séparément.

    DataOption2 Argument de type XlSortDataOption facultatif. Indique comment trier le texte dans la clé 2. Cet argument ne peut être utilisé lors du tri de rapports de tableau croisé dynamique.

    XlSortDataOption peut être l'une de ces constantes XlSortDataOption.
    xlSortTextAsNumbers. Traite le texte comme données numériques pour le tri.
    xlSortNormal par défaut. Trie les données numériques et textuelles séparément.

    DataOption3 Argument de type XlSortDataOption facultatif. Indique comment trier le texte dans la clé 3. Cet argument ne peut être utilisé lors du tri de rapports de tableau croisé dynamique.

    XlSortDataOption peut être l'une de ces constantes XlSortDataOption.
    xlSortTextAsNumbers. Traite le texte comme données numériques pour le tri.
    xlSortNormal par défaut. Trie les données numériques et textuelles séparément..

    Notes
    Les paramètres des arguments Header, Order1, Order2, Order3, OrderCustom et Orientation sont enregistrés, pour la feuille de calcul particulière, chaque fois que vous utilisez cette méthode. Si vous ne spécifiez pas de valeurs pour ces arguments lorsque vous appelez de nouveau la méthode, les valeurs enregistrées sont utilisées. Définissez ces arguments de manière explicite chaque fois que vous utilisez la méthode Sort, si vous choisissez de ne pas utiliser les valeurs enregistrées.

    Les chaînes de texte qui ne peuvent être converties en données numériques sont triées normalement.

    Remarque Si aucun argument n'est défini avec la méthode Sort, Microsoft Excel trie la sélection en ordre croissant.

    Exemples
    Cet exemple montre comment trier la plage A1:C20 de la feuille Sheet1, en utilisant la cellule A1 comme première clé de tri et la cellule B1 comme deuxième clé de tri. Le tri est effectué en ordre croissant par ligne et il n'y a pas d'en-tête. Cet exemple suppose que la plage A1:C20 contient des données.

    Sub SortRange1()

    Worksheets("Sheet1").Range("A1:C20").Sort _
    Key1:=Worksheets("Sheet1").Range("A1"), _
    Key2:=Worksheets("Sheet1").Range("B1")

    End Sub
    Cet exemple montre comment trier la zone contenant la cellule A1 (zone active) de la feuille Sheet1, en triant les données dans la première colonne et en utilisant automatiquement une ligne d'en-tête, s'il en existe une. Cet exemple suppose que la zone active, contenant la cellule A1, contient des données. La méthode Sort détermine la zone active automatiquement.

    Sub SortRange2()

    Worksheets("Sheet1").Range("A1").Sort _
    Key1:=Worksheets("Sheet1").Columns("A"), _
    Header:=xlGuess

    End Sub

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 155
    Par défaut
    J'ai résolu mon problème en faisant ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Columns("A:F").Select
            Selection.Sort Key1:=Range("C1"), Order1:=xlAscending, Key2:=Range("D1:E1") _
    , Order2:=xlAscending, Key3:=Range("B1"), Order3:=xlAscending, Header:= _
    xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:=xlSortNormal
    Cela marche très bien.

    Merci encore de votre aide.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 23/11/2011, 16h36
  2. [AC-2007] Comment faire une requete avec 23 critères "ou" sur colonnes differentes
    Par sebing dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 14/09/2010, 19h33
  3. [E-03] Sort, tri avec 4 critères?
    Par drakkar_agfa dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/10/2008, 19h54
  4. Réponses: 1
    Dernier message: 08/03/2007, 10h55

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