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 :

[VBA-E] Qd je "sort", ca efface !


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Par défaut [VBA-E] Qd je "sort", ca efface !
    Bonjour,

    il m'arrive un truc bizarre :

    dans une maro, je selection une zone et je fais ensuite un tri:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub SortAllModels(Region)
     
        Sheets("Raw Data " & Region).Select
        Range("A11:D3305").Select
        Selection.Sort Key1:=Range("b11"), Order1:=xlDescending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    End Sub
    ce code fonctionnait depuis des mois et encore pas plus tard qu'hier mais aujourd'hui pour je ne sais quelle raison, au lieu de trier, ca efface le contenu de la zone A11:A3305...

    Qqn a une idée ??? rien n'a changé sur mon pc...

    Quel autre code pourrait-on utiliser pour faire le tri ???


    Merci


  2. #2
    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
    Par défaut
    Essaie de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Sheets("Raw Data " & Region).Activate
        Range("A11:D3305").Sort Key1:=Range("b11"), Order1:=xlDescending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    Je n'ai pas en tête si la sélection est indispensable pour un tri mais si cette syntaxe fonctionne, elle est préférable et si tu ne sélectionnes pas, je ne vois pas comment elle pourrait s'effacer (?)
    A+

    Edit
    Je confirme, tu n'es pas obligé de sélectionner la plage à trier

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Par défaut
    J'ai essayé mais malheureusement, ca ne change rien au problème...


  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Par défaut
    en fait, je viens de me rendre compte que ca n'éffacait pas mais que ca mettait les lignes vide en premier alors qu'avant ca les mettait à la fin...

    n'ayant pas envie de devori adapter les nombreux fichiers dans lesquels cette macro a été collée, qqn a une idée d'ou ca pourrait venir ????



  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    Par défaut
    tu pourrais envoyer ton fichier stp?
    Je viens de faire des tests et le tri se apsse très bien
    Si je mets des lignes vides volontairement, elles se retrouvent bien à la fin

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Par défaut
    je vais avoir du mal car le fichier est lié à notre base de donnée...

    mais de fait, jusque jeudi dernier les lignes blanches se mettait à la fin et maintenant elles se mettent au début.

    rien n'a été installé sur mon pc et mon code vba n'a pas changé...

    Serait-ce un parametre qq part ?

  7. #7
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben revoi ta zone de tri (il doit y avoir trop de lignes ) ...
    pourquoi ces 2 lignes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Sheets("Raw Data " & Region).Select
        Range("A11:D3305").Select

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Par défaut
    Citation Envoyé par bbil
    ben revoi ta zone de tri (il doit y avoir trop de lignes ) ...
    pourquoi ces 2 lignes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      Sheets("Raw Data " & Region).Select
        Range("A11:D3305").Select
    Par ce que je dois d'abords changer de feuille (avant le tri je me trouve dans une autre feuille de mon fichier)

    Sinon, mon range a cette taille là car il contient 3176 modeles different et que chaque mois cette liste s'agrandit et je dois être sur de bien trier tous les modeles...


  9. #9
    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
    Par défaut
    Si tu ne veux pas modifier ta macro, alors il va être difficile de t'aider
    Un tri en ordre inverse mettrait tes lignes vides à la fin.
    Ensuite tu redéfinis la plage renseignée (sans les lignes vides) et tu relances ton tri dans le bon ordre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub RangerLignesVidesAlaFin()
    Dim plage
        Range("A11:D3305").Sort Key1:=Range("b11"), Order1:=xlDescending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    'Derniereligne = Range("A1").End(xlDown).Row et donc
    plage = "A11:" & Cells(Range("A1").End(xlDown).Row, 4).Address
        Range(plage).Sort Key1:=Range("b11"), Order1:=xlAscending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
     
    End Sub
    J'ai foutu le bouzou dans ma base de données qui comporte + de 4 colonnes mais le test est ok si... 3305 est bien la dernière ligne de ta feuille.Sinon, tu remplaces
    plage = "A11:" & Cells(Range("A1").End(xlDown).Row, 4).Address
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    plage = "A11:" & Cells(Range("A11").CurrentRegion.End(xlDown).Row, 4).Address
    Favorise cette dernière syntaxe. Mais là, tes lignes vides seront entre la ligne 3305 et la plage triée (en remontant)
    A+

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 557
    Par défaut
    En gros, il suffit de paramétrer ton 3305 en fonction des données renseignées ou non dans tes cellules

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

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