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 si cellules contenant formules = 0 ou vides


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Mai 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Mai 2016
    Messages : 4
    Par défaut Masquer lignes si cellules contenant formules = 0 ou vides
    Bonjour,

    Je suis nouveau sur ce forum, que je parcoure depuis quelque temps. N'ayant pas trouvé la réponse à ma question dans d'autres sujets, je pose ma question ici.

    Dans mon tableau, la colonne A contient du texte et les autres colonnes (B à AK) contiennent soit des formules soit des chiffres.

    Je souhaite que : si toutes les cellules de la ligne contenant des formules avec comme résultat = 0 ou cellules vides, la ligne soit masquée. Si une seule des cellules de la ligne contient un résultat supérieur à 0 ou un chiffre, que la ligne ne soit pas masquée.

    J'ai utilisé ce code mais ça ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub masquer_ligne_vide_TEST2()
    Dim Cel As Range
    For Each Cel In Range("B6:AK13,B16:AK19")
    If Cel.Value <> "" And Cel.Value = 0 Then
    Cel.EntireRow.Hidden = True
    End If
    Next
    End Sub
    Merci d'avance pour votre aide.

  2. #2
    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 176
    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 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Au lieu d'utiliser une boucle, le plus simple à programmer est l'utilisation du filtre avancé d'excel (méthode AdvancedFilter en VBA)
    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

  3. #3
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Mai 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Mai 2016
    Messages : 4
    Par défaut
    Bonjour Philippe,

    Merci pour la réponse. Etant débutant en VBA, je nage au niveau des filtres, je ne sais pas par quel bout commencer. Pourriez-vous m'aiguiller?

    Bonjour Vinc,

    Merci pour ce code, malheureusement, aucune des deux méthodes ne fonctionne. Celle basée sur ma méthode donne une erreur 1004.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each Cel In Worksheets(1).Range("B6:AK13,B16:AK19").Cells
            Cel.EntireRow.Hidden = not cdbl(cstr("0" & Cel.Value ))
    Next
    Mais j'opterai pour option de Philippe

  5. #5
    Candidat au Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Mai 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur commercial

    Informations forums :
    Inscription : Mai 2016
    Messages : 4
    Par défaut
    Bonsoir,

    Je l'ai tapé ainsi, mais ça me met une erreur d'exécution 9 "l'indice n'appartient pas à la selection". Ma feuille s'appelle "Planif1"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub masquer_ligne_vide_TEST4()
    For Each Cel In Worksheets(Planif1).Range("B6:AK13,B16:AK19").Cells
            Cel.EntireRow.Hidden = Not CDbl(CStr("0" & Cel.Value))
    Next
    End Sub

  6. #6
    Membre éprouvé
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 72
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub masquer_ligne_vide_TEST4()
    For Each Cel In Worksheets("Planif1").Range("B6:AK13,B16:AK19").Cells
            Cel.EntireRow.Hidden = Not CDbl(CStr("0" & Cel.Value))
    Next
    End Sub
    Tu as oublié les guillemets.

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Voir l'exemple ci-dessous si ça peut vous aider

    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
    Sub masquer_ligne_vide_TEST2()
    Dim Cel As Range, InpRng As Range
     
    'Mieux
        Set InpRng = Worksheets(1).Range("B6:AK13,B16:AK19").SpecialCells(xlCellTypeBlanks)
        InpRng.EntireRow.Hidden = True
     
    'Autrement .... basée sur votre version
    Set InpRng = Worksheets(1).Range("B6:AK13,B16:AK19")
    InpRng.Select
     
    For Each Cel In Worksheets(1).Range("B6:AK13,B16:AK19").Cells
     
        If Cel <> vbNullString Or Cel.Value = 0 Then
            Cel.EntireRow.Hidden = True
        End If
    Next
     
     
    End Sub

Discussions similaires

  1. [XL-2003] Mise en forme conditionnelle dans cellule contenant formule
    Par graphikris dans le forum Excel
    Réponses: 9
    Dernier message: 10/04/2013, 18h07
  2. [XL-2003] Boucle supprimer ligne dont cellule contenant..
    Par frag132 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/01/2013, 13h32
  3. Entrer valeur dans cellule contenant formule
    Par laskachien dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 05/11/2010, 14h06
  4. Réponses: 5
    Dernier message: 08/03/2007, 10h13
  5. Verrouiller cellule contenant des formules
    Par zouille dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 19/12/2005, 11h47

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