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 :

La methode sort de la classe range a échouée


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Points : 91
    Points
    91
    Par défaut La methode sort de la classe range a échouée
    bonjour,

    j'ai enregistrer une tite macro mais lorsque je l'utilise elle ne fonctionne pas
    c'est juste un pti tri
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Selection.Sort Key1:=Range("AC6"), Order1:=xlDescending, Header:=xlGuess, _
           OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Il ya une l'erreur et je ne vois pas laquelle
    une idée ?

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    et en ajoutant DataOption1:=xlSortNormal a la fin

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     Selection.Sort Key1:=Range("AC6"), Order1:=xlDescending, Header:=xlGuess, _
           OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Sans doute dans ta sélection. Un exemple qui fonctionne pour une plage de cellule entre la ligne 1 et la dernière ligne renseignée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Range("A1", Range("A1").End(xlDown)).Sort Key1:=Range("A2"), _
            Order1:=xlAscending, Header:=xlYes, _
            MatchCase:=False, Orientation:=xlTopToBottom
    Header:=xlYes si tu as un en-tête.

  4. #4
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Points : 91
    Points
    91
    Par défaut
    en ajoutant data Option 1 non ca ne fait rien :s

  5. #5
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Points : 91
    Points
    91
    Par défaut
    finalement un pb
    ouskel'nor j'ai essayé mais en faite dans la premiere colonne tt les champs sont rempli mais dans la colonne que je veux trier il y a des champs vide !

    et justement jveux mettre les champs vide a la fin

  6. #6
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Points : 91
    Points
    91
    Par défaut Tri d'unee colonne avec des champs vide
    Bonjour,
    je fais suite a ma question précedente.

    Comment peut on trier dans une plage de cellule une colonne avec des cellule vide ?

  7. #7
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("<la plage à trier>").Sort

  8. #8
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Points : 91
    Points
    91
    Par défaut

    ah bah non!

  9. #9
    Membre confirmé Avatar de Commodore
    Homme Profil pro
    Business manager
    Inscrit en
    Février 2004
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Business manager

    Informations forums :
    Inscription : Février 2004
    Messages : 599
    Points : 632
    Points
    632
    Par défaut
    comment ça non ?
    ou alors j'ai mal compris ta question?

  10. #10
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Points : 91
    Points
    91
    Par défaut
    en faite j'ai une plage de cellule qui varie

    et je veux trier la colonne AC
    La colonne A n'a aucune cellule vide mais ma colonne AC a des champs vide et moi je veux trier cette colonne AC

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("A5", Range("A5").End(xlDown)).Sort Key1:=Range("AC6"), Order1:=xlDescending, Header:=xlGuess, _
      OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour Titez,

    Comme vous l'a dit Ouskel'n'or :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("A1", Range("A1").End(xlDown)).Sort Key1:=Range("A2"), _
            Order1:=xlAscending, Header:=xlYes, _
            MatchCase:=False, Orientation:=xlTopToBottom
    Mais comme votre 2ème colonne contient des cellules vides et que vous les voulez en fin de fichier il faut changer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sort Key1:=Range("A2"), _
    Order1:=xlAscending
     
    en 
    Sort Key1:=Range("B1"), _
    Order1:=xlDescending
    Si vous voulez ensuite que les cellules non vides de la colonne "B" soient triées à nouveau dans l'ordre "Ascendant" il faudra relancer le tri en partant de B1 et dernière ligne non vide en "B" et en remettant : Order1:=xlAscending

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Ok, il faut que tu détermines ta plage autrement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Range("A5").CurrentRegion.Sort Key1:=Range("G5"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    Ce code fonctionne si tu n'as pas de ligne ou colonne entièrement vide dans ta plage et si ta plage commence à la ligne 5
    Si ce n'est pas le cas, il faudra une autre syntaxe pour déterminer la plage de données à trier.
    A+

  13. #13
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 268
    Points : 91
    Points
    91
    Par défaut
    ok ok j'ai compris

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Jète un oeil à CurrentRegion, dans l'aide.
    Mon code répond à ta demande telle que tu la formules... SI et seulement si ta plage de cellule commence bien ligne 5 (ligne 1 à 4 non renseignées) et SI tu n'as pas de ligne ni de colonne entièrement vide dans la plage à trier.

    Si c'est le cas, adapté à tes colonnes, ça donnerait ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Range("A5").CurrentRegion.Sort Key1:=Range("AC5"), Order1:=xlAscending, Header:=xlGuess, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
            DataOption1:=xlSortNormal
    Si ça ne passe pas pour les conditions décrites plus haut, tu dois déterminer ta plage à trier.
    Je suppose que les lignes 1 à 4 sont renseignées, que tu as des colonnes ou des lignes vides dans ta plage, auquel cas on recherche la dernière colonne et la dernière ligne renseignées de ta feuille pour fixer cette plage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        DerniereLigne = Range("A65535").End(xlUp).Row
        DerniereColonne = Range("IV1").End(xlToLeft).Column
    Ensuite, on détermine la plage
    On choisit 5 comme première ligne (ton code) et 1 comme première colonne (ton code)
    Ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim Plage as variant
    Dim DerniereLigne as long
    Dim DerniereColonne as byte
        DerniereLigne = Range("A65536").End(xlUp).Row
        DerniereColonne = Range("IV1").End(xlToLeft).Column
        plage = Range(Cells(5, 1), Cells(DerniereLigne, DerniereColonne)).Address(False, False)
        Range(plage).Sort Key1:=Range("AC5"), _
            Order1:=xlAscending, Header:=xlYes, _
            MatchCase:=False, Orientation:=xlTopToBottom
    Attention
    Si ta dernière ligne renseignée est la ligne 65536, ce code ne fonctionne pas (!!!) mais bon...
    Tu testes et tu nous dis
    A+

    NB - On peut simplifier ce code mais c'est pour que tu comprennes la démarche

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

Discussions similaires

  1. Problème Select (Methode Select de la classe Range à échoué)
    Par linkcr15 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 05/06/2012, 09h43
  2. [XL-2003] Method select de la classe range échoue
    Par Grindan dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/09/2010, 09h08
  3. La méthode sort de la classe range a échoué
    Par laetitia02 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/05/2010, 10h09
  4. [VBA-E] Erreur methode select classe range
    Par kdestine dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 17/09/2007, 11h05
  5. la methode select de la classe range a échoué
    Par shrekos007 dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 26/05/2007, 15h51

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