VBA afficher/masquer ligne selon valeur

Bonjour,

Je cherche un code pour pouvoir afficher ou masquer une ligne selon condition.

Voici mon cas :

J'aimerais masquer la ligne 68 si ma celulle C68 est vide mais l'afficher si ma celulle C68 contient une valeur.

Sachant que j'ai une formule dans ma celulle C68.

J'espère avoir été clair.

Merci beaucoup !!!

Bonjour,

Code à placer dans le module de la feuille concernée (clic droit sur l'onglet / visualiser le code)

Private Sub Worksheet_Change(ByVal Target As Range)
    Rows(68).EntireRow.Hidden = (Range("C68").Value = vbNullString)
End Sub

Bonjour

Le code masque bien la ligne quand elle est à 0 par contre quand une valeur apparaît dans la case C68 la ligne ne réapparaît pas.

Bonjour,

Qu'elle est donc la formule en C68?

Bonjour

Le code masque bien la ligne quand elle est à 0 par contre quand une valeur apparaît dans la case C68 la ligne ne réapparaît pas.

Evidemment l'évènement de recalcul d'une formule n'est pas détecté par excel avec : Private Sub Worksheet_Change

Si tu ne donnes pas la formule utilisée en C68 il n'y a rien à faire.

L'évènement qui déclenche une valeur qui n'est pas à zéro en c68 se trouve dans une autre cellule que tu as modifiée.

Bonjour,

Evidemment l'évènement de recalcul d'une formule n'est pas détecté par excel avec : Private Sub Worksheet_Change

D'où mon code qui n'utilise pas Target.

Toute modification de données dans la feuille va déclencher l'événement Change(). Y compris les cellules qui déclenchent le recalcul de la formule. Et donc, de ce fait, la macro événementielle va vérifier si C68 est vide ou non, à chaque changement dans la feuille.

Je sais, ça peux vite être lourd, mais, ici, on n'a qu'une ligne de code...

Mais attendons la formule, pour savoir...

Bonjour,

La formule dans la case C68 est la suivante : =SI('Données à saisir'!C57="";"";-'Données à saisir'!C57)

Elle fait référence à la feuille "données à saisir" qui contient ou non une valeur en C57 . La valeur en C57 est une valeur saisie.

Merci beaucoup

Bonjour,

Dans le module de code de la feuille Données à saisir, placer ce code (à adapter le nom de la feuille contenant la formule en C68) :

Private Sub Worksheet_Change(ByVal Target As Range)
    With Sheets("Feuil1") '*********à adapter le nom de la feuille contenant la formule en C68**********
        .Rows(68).EntireRow.Hidden = (.Range("C68").Value = vbNullString)
    End With
End Sub

Génial !

C'est exactement ce que je voulais !

Merci beaucoup

Bonjour,

Dans le module de code de la feuille Données à saisir, placer ce code (à adapter le nom de la feuille contenant la formule en C68) :

Private Sub Worksheet_Change(ByVal Target As Range)
    With Sheets("Feuil1") '*********à adapter le nom de la feuille contenant la formule en C68**********
        .Rows(68).EntireRow.Hidden = (.Range("C68").Value = vbNullString)
    End With
End Sub

Bonjour Pijaku , je ne serais pas allé jusqu'à mettre ma main au feu ; mais j'étais sur à 99% que l'info qui changé la valeur en C68 se trouvait sur une autre feuille.

Salut Xmenpl,

+1

J'en étais également persuadé...

Mais, pareil, je tiens à mes mains!

Notamment pour les cas ou les infos de cette formule proviendraient de x autres feuilles, ou même d'un classeur fermé (par RECHERCHEV par exemple)...

A++

Rechercher des sujets similaires à "vba afficher masquer ligne valeur"