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

  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
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 560
    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
    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

  7. #7
    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 ?

  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
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 560
    Par défaut
    cela veut dire que tu reçois des données différentes
    J'ai fait un petit test

    A mon avis, les lignes que tu penses être vides contiennent sans doute un espaces ==> la base est mal alimentée ou sinon va falloir adapté ton code

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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 560
    Par défaut
    je te conseillerais donc de traiter tsdonnées avant de les trier (a moins qu'il y ait moyen de remettre la base de données à jour faiclement et rapidement)
    Pour cela, tu devrais parcourir ts cellules et faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i,j) = Rtrim(Cells(i,j)
    En supposant que tu boucles sur toutes les lignes e colonne) ==> i allant de 12 à 3305 et j de 1 à 4

  11. #11
    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
    à priori tu tri sur la colonne B ...? cela ve dire que celle-ci est toujours remplie pour les données à trier..?

    si oui tu peu utiliser cette colonne pour déterminer la derniére ligne de ton tableau... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     Dim iDerlg As Integer
     
      iDerlg = Sheets("Raw Data " & Region).Range("B65535").End(xlUp).Row
     
       Sheets("Raw Data " & Region).Range("A11:D" & iDerlg).Sort Key1:=Range("b11"), Order1:=xlDescending, Header:=xlNo, _
            OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom

  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
    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+

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

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

  14. #14
    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
    Merci à tous pour vos reponses...

    de fait, je suis bien pbligée de modifier mon code pour trier uniquement les lignes non vides...

    ce que je ne comprends pas, c'est que ca a marché sans prob pendant des mois et là, la veille du jour où tout doit être updater, ca ne fonctionne plus....



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

    Informations forums :
    Inscription : Juillet 2004
    Messages : 560
    Par défaut
    Comme je te disais
    Peut être que jusqu'à la veille du jour, les zones étaient réellement vide puis tout 'un coup elles semblaient vides mais contenaient un espace.......

    C'est la seule explication...t'as pu voir dans la base de données si tu avais des enregistrement avec des espaces ?

  16. #16
    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 vérifier la base de donnée et le fichier excel, tout est bien vide, pas d'espace ni quoique ce soit....

    je ne comprends vraiment pas....

+ 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