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 lignes selon conditions [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut masquer lignes selon conditions
    Bonjour,

    je cherche à masquer pour exploitation dans un fichier les ligne pour lesquelle la valeur dans la colonne v est égal zéro puis par la suite
    pour un plage donné si toute la plage est vide independemment de la colonne maquer toute la ligne
    exemple de ligne 1 à 92 masquer les ligne pour lesquelle en colonne v on a zéro
    puis regardeer dans la plage D98:T107 masquer toutes les lignes vides ,idem plages D122:T130,D184:T192;D198:T207;D228:T237;D245:T245;D249:T260;D266
    j'ai un code qui permet de masquer les lignes à zéro dans la colonne v mais c'est dans les plages que c'est un peu difficile : en fait dans les plages pour qu'une ligne soit supprimée il faut que toute la ligne dans la plage soit vide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub masquer_lignes()
    Dim i As Long
    Sheets("Non-current Assets form").Select
    For i = 1 To 92
     If Cells(i, 22).Value = 0 And Cells(i, 1).Value <> "" Then
     Rows(i).Hidden = True
    End If
    Next
    Next

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Tu parles de masquage et de suppression...
    Dans ton code, tu masques les lignes si V=0 et A<>"".

    Qu'en est-il des plages ?
    Est-ce que tu dois aussi vérifier la valeur en A ou il faut vraiment que toute la ligne soit vide ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut
    En fait il faut juste masquer et non supprimer
    dans la plage si une ligne est vide la ligne entière doit être masquée.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 179
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 179
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En fait il faut juste masquer et non supprimer
    dans la plage si une ligne est vide la ligne entière doit être masquée.
    La méthode AdvancedFilter de l'objet Range peut répondre à ta demande avec comme critère nommé la formule NBVAL
    Exemple pour une zone data (plage $A$1:$F$203 de la feuille nommée [db]) et la zone des critères en I1:I2 avec comme étiquette de colonne en (I1) par exemple _fn_ et la formule en I2
    La procédure VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub MasquerLigne()
     Dim rngData As Range, rngCriteria As Range
     With ThisWorkbook.Worksheets("db")
      Set rngData = .Range("A1:F203")
      Set rngCriteria = .Range("I1:I2")
     End With
     rngData.AdvancedFilter xlFilterInPlace, rngCriteria
    End Sub
    A lire Les filtres avancés ou élaborés dans Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2015
    Messages : 28
    Par défaut
    j'ai testé le code mais cela ne semble pas convenir. normalement je ne dois pas mettre saisir dans la feuille.

    ce que je voudrais c'est un code simple qui dirait si une ligne de la plage est vide alors masquer la ligne entière.

    j'ai ecris ce code mais il bug sur la ligne 7 normalement si c'est corrigé ça devrait marcher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub masquer1()
     
     Dim i As Integer
     
      Sheets("DD").Select
     For i = 98 To 107
      If Range("D" & i & ":T" & i).Cells Is Empty Then
     Rows(i).Hidden = True
     End If
     
     Next
     
    End Sub

  6. #6
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Je ne sais pas si les lignes que tu mentionnes sont toujours les mêmes ou non.
    Si oui, ceci devrait fonctionner.
    Il reste aussi le critère de la cellule A (Cells(I, 1).Value = 0 ) que je n'ai pas considéré... à rajouter à la condition si nécessaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub masquer_lignes()
        Dim I As Long, J As Long
        Dim Plages
     
        'Tableau des débuts et fins des plages
        Plages = Array(122, 130, 184, 192, 198, 207, 228, 237, 245, 249, 260, 266)
     
        Sheets("Non-current Assets form").Select
        For I = 1 To 92
            If Cells(I, 22).Value = 0 And Cells(I, 1).Value <> "" Then
                Rows(I).Hidden = True
            End If
        Next
     
        For J = LBound(Plages) To UBound(Plages) Step 2
            For I = Plages(J) To Plages(J + 1)
                If Application.CountA(Rows(I)) = 0 Then     'Si la ligne est vide
                    Rows(I).Hidden = True                          'on masque
                End If
            Next
        Next
    End Sub

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

Discussions similaires

  1. Couper coller une ligne selon condition
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 03/05/2019, 08h50
  2. masquer colonnes selon conditions
    Par chouchouboy dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/10/2010, 19h39
  3. supprimer ligne selon condition
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 17/06/2009, 16h39
  4. Colorer une ligne selon condition
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/10/2008, 08h23
  5. copier des lignes selon condition
    Par malek1913 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/02/2008, 16h45

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