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 :

Masquer des lignes sur condition


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Par défaut Masquer des lignes sur condition
    Bonjour,
    J'utilise actuellement ce code pour masquer des lignes (merci à ceux qui m'ont aidé).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Masquer()
    Dim i As Long
        For i = 11 To Rows.Count
            If Range("A" & i).Text = "" Then Exit For
                If Range("C" & i).Value = "Archivé" Then
                Rows(i).Hidden = True
            End If
        Next i
    End Sub
    Comme j'ai beaucoup de lignes, je le trouve assez lent et j'ai l'impression qu'après avoir testé une ligne, il retourne à l'origine avant de redescendre lire la ligne suivante.
    Après avoir testé une ligne, n'est-il pas possible de :
    - lire immédiatement la ligne suivante,
    - si la cellule A est vide, alors sortir sinon
    - si la cellule C est égale à "Archivé", masquer toute la ligne sinon passer à la suivante.
    Cela est-il possible? et si oui, comment modifier le code?
    A l'avance, merci.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Février 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 52
    Par défaut
    Hello
    Je ne comprends pas précisemment ce que tu veux?
    Qu'entends tu par "tester une ligne" ? Vérifier que sa cellule A est vide?
    Si elle est vide, tu veux sortir complètement de la boucle ou juste passer à la ligne suivante?

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Par défaut
    Par tester je voulais parler des conditions,
    Si la cellule A est vide, c'est que nous sommes à la fin des enregistrements et donc sortir.
    Si la cellule A n'est pas vide et que la cellule C est égale à "Archivé" alors masquer la ligne entièrement puis passer à la ligne suivante.
    Si la cellule A n'est pas vide et que la cellule C est différente de "Archivé" alors ne rien faire et passer à la ligne suivante.
    J'espère avoir été plus clair.

  4. #4
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    euuhhhh...je suppose que vu ta réponse...tu as testé le code que je te propose ou du moins que tu l'as lu ?

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Par défaut
    Pour Fring,
    Ce n'est pas le nombre de lignes qui fait qu'il rame, car quand je lance le masquage, je peux suivre la progression qui est très lente, d'où ma question d'origine.

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bon... fais comme tu veux
    Pour info, je viens de tester sur 5000 lignes, ça prend 5 secondes, même résultat chez toi ?

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Par défaut
    Pour 624 lignes, il a mis 105 secondes. J'ai cru qu'il était planté. C'est peut-être dû au volume de chaque ligne?

  8. #8
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Oui c'est long parce que tu vérifies les 65535 lignes...(voir bcp plus si tu es en 2007)

    Autre petit détail, pour supprimer ou masquer des lignes, il faut faire une boucle en remontant sinon ça coince lorsque plusieurs lignes consécutives sont à masquer

    Ce qui donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Masquer()
    Dim i As Integer
        For i = Cells(Rows.Count, 1).End(xlUp).Row To 11 Step -1
            If Cells(i, 3) = "Archivé" Then Rows(i).Hidden = True
        Next i
    End Sub
    Et dans ce cas plus besoin de vérifier si A est vide

  9. #9
    Membre éclairé Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Par défaut
    je pense que le seul truc qui fait que tu rame est le row.count


    alors fixe plutot une valeur : For i = 1 to 1000

    sinon test avec ce que fais fring
    mais moi j ai un code comme le tien qui fonctionne tres bien...

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

Discussions similaires

  1. Masquer des lignes avec une condition
    Par mjp06 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/03/2019, 19h23
  2. Masquer des lignes sous condition
    Par linousxm dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/05/2010, 13h19
  3. Datagridview: Masquer des cellules sur certaines lignes
    Par boby62423 dans le forum Windows Forms
    Réponses: 0
    Dernier message: 27/04/2009, 14h57
  4. Masquer / démasquer des lignes sur critère.
    Par marc56 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 28/02/2008, 01h54

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