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 :

Macro masquer les lignes [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 76
    Par défaut Macro masquer les lignes
    Bonjour,

    Dans le fichier joint j'ai des colonnes et des lignes. Certaine cellule comporte des nombres et d'autres sont vides (plage de B à M).
    Il y a des lignes où tout est vide comme les lignes 5, 14, 15, 24.

    Pouvez-vous me donner une macro qui me permette de masquer les lignes où tout est vide ?

    Merci par avance
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 94
    Par défaut
    Bonjour
    voici deux macros,
    1 pour Masquer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub LigneVide()
    Dim i As Integer
        Application.ScreenUpdating = False
          Lignes = Range("A65535").End(xlUp).Row
            For i = Lignes To 1 Step -1
                If Application.WorksheetFunction.CountA(Rows(i)) = 1 Then Rows(i).Hidden = True
            Next i
        Application.ScreenUpdating = True
    End Sub
    Et une pour Afficher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub AfficheVide()
        Application.ScreenUpdating = False
           Cells.EntireRow.Hidden = False
        Application.ScreenUpdating = True
    End Sub

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 76
    Par défaut
    Bonjour,

    Merci pour votre aide.
    Mais la macro ne fonctionne pas car en bout de ligne j'ai une formule qui renvoie une valeur.
    Ci joint mon fichier. Ce que je souhaite, c'est masquer automatiquement les lignes complètes lorsque les cellules de T à AB sont vides même si il y a des valeurs de AC à AF.

    Merci par avance
    Fichiers attachés Fichiers attachés

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 94
    Par défaut
    Re
    Si la macro fonctionne pour l'exemple que tu avais, maintenant les données sont différentes!!

    Voici une adaptation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub ligneVide2()
     Dim i As Integer
     Application.ScreenUpdating = False
     With ActiveSheet
         For i = 7 To .Cells(Rows.Count, 29).End(xlUp).Row
             If Application.WorksheetFunction.Sum(.Range(.Cells(i, 20), .Cells(i, 28))) = 0 Then Rows(i).Hidden = True
         Next i
     End With
     Application.ScreenUpdating = True
     End Sub

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 76
    Par défaut
    extra ca fonctionne merci

    Mais pour que je puisse la transposer, peux tu m'expliquer ?

    Par exemple si ma plage de données change, comment je lui dit ?

    A correspond dans ta macro, le 7 ? 29? 20? et 28?

    Encore merci

  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
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 7 To .Cells(Rows.Count, 29).End(xlUp).Row
    cela signifie de la ligne 7 à la dernière ligne utilisée de la colonne 29 (AC)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range(.Cells(i, 20), .Cells(i, 28))
    = plage de cellules de la ligne i (en fonction de la boucle For...Next), de la colonne 20 (T) à la colonne 28 (AB)
    Par exemple au premier passage de la boucle, la plage de cellules sera Range("T7:AB7")

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 76
    Par défaut
    ok compris merci
    Mais je souhaite qu'il ne fasse que de la ligne 7 à la ligne 40, je lui dit comment ?

  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
    Citation Envoyé par desatan Voir le message
    ok compris merci
    Apparemment non... tu n'as pas vraiment compris le fonctionnement de la boucle For...Next

    For i = premièreligne To dernièreligne

    donc si tu veux que la première ligne de la boucle soit la 7 et que la dernière ligne de la boucle soit la 40 ça donne...?

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 76
    Par défaut
    Quand je mets çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For i = 7 To 40.Cells(Rows.Count, 37).End(xlUp).Row
    Il me dit : erreur de compilation ?

    Je disais compris pour les numéros qui correspondent aux colonnes

  10. #10
    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
    Si on ne connait pas la dernière ligne d'une colonne jusqu'à laquelle il faut boucler, on la recherche de cette manière (par exemple pour la colonne B)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Rows.Count, 2).End(xlUp).Row
    Par contre si tu veux boucler jusqu'à la ligne 40, il suffit d'écrire

  11. #11
    Membre confirmé
    Inscrit en
    Avril 2010
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 76
    Par défaut
    Super
    Merci pour l'aide et les explications

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

Discussions similaires

  1. masquer les lignes listbox
    Par abouhossam dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/11/2008, 14h37
  2. [BO6.5.1] Masquer les lignes vides
    Par Herlece dans le forum Deski
    Réponses: 3
    Dernier message: 06/08/2008, 12h03
  3. masquer les lignes
    Par abouhossam dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/02/2008, 10h20
  4. Supprimer/Masquer les lignes vides
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 23/05/2007, 13h13
  5. masquer les lignes dans une zone si une cellule de la ligne est vide
    Par keguira dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/11/2006, 19h21

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