VBA cacher une ligne si valeur cellule = à 0

Bonjour à tous,

Et merci pour les aides que vous apportez aux novices en VBA.

J'ai un tableau de 4 colonnes.

J'aimerai pouvoir cacher uniquement les lignes dont la valeur de la cellule "D" est égale à 0.

Les valeurs située en "D" répondent à la formule suivante : =SUM(B:C) (pour 1,2,3...)

J'ai donc créé un bouton permettant d'activer la commande :

Private Sub Mettre_a_jour_Click()
On Error Resume Next
If Not Intersect(Target, [D1]) Is Nothing Then
If Target = 0 Then Rows("1").EntireRow.Hidden = True
End If
If Not Intersect(Target, [D2]) Is Nothing Then
If Target = 0 Then Rows("2").EntireRow.Hidden = True
End If
If Not Intersect(Target, [D3]) Is Nothing Then
If Target = 0 Then Rows("3").EntireRow.Hidden = True
End If
End Sub

Ma commande fonctionne mais le hic c'est que la commande masque l'ensemble des lignes et pas seulement la/les ligne(s) concernée(s).

Auriez-vous des idées pour solutionner mon problème ?

Merci pour toutes vos idées !

La ganache

Bonjour La Ganache, le forum,

Un essai :

Sub Masqueligne()

            'Dernière ligne remplie de la colonne A
             Lg = Range("D65536").End(xlUp).Row

            'De la ligne 4 à la dernière ligne remplie
             For i = 4 To Lg

            'Si la cellule D&i est égale à 0 = la ligne est masquée
    If Cells(i, 4).Value = "0" Then
       Rows(i).Hidden = Not (Rows(i).Hidden) 'masque/affiche
            'Ligne suivante

    End If
             Next
End Sub

Cordialement,

Bonjour à tous,

Pour ceux que cela pourrait intérésser voici le code :

Private Sub Mettre_a_jour_Click()
Dim cellule As Range
For Each cellule In Range("D1:D3")
If cellule.Value = "0" Then cellule.EntireRow.Hidden = True
Next cellule
End Sub

Un grand merci à Dan pour son poste !

Bonjour,

Si tu en avais 100 tu répèterais 100 fois !

.Rows c'est déjà la ligne entière ! .Rows.EntireRow c'est équivalent à un pléonasme !

Tu fais un mélange des genres : fausse évènementielle avec Target non définie... !

Si Mettre_a_jour est un bouton (activeX) sur la feuille concernée, procédure au clic sur bouton dans le module de la feuille :

Private Sub Mettre_a_jour_Click()
    Dim c As Range
    For Each c In [D1:D3]
        c.EntireRow.Hidden = (c = 0)
    Next c
End Sub

Cordialement.

Rechercher des sujets similaires à "vba cacher ligne valeur"