Masquer une ligne en fonction de la valeur d'une cellule

Bonjour,

Je cherche une solution afin qu’une ligne sur une feuille soit masquée ou non en fonction de la valeur d’une cellule sur un autre feuille.

Dans l’exemple ci-joint, si une valeur est entrée dans la cellule A1 des feuilles « Ligne 3 » et « Ligne 4 », il faudrait que la ligne 3, respectivement la ligne 4, de la feuille

« Base » soit masquées.

https://www.excel-pratique.com/~files/doc2/Exemple_20090904.xls

Bonne journée à tous.

Bonjour,

essaie avec ce code :

Sub essai()
'MAcro Dan pour Yvouille
Dim I As Byte
For I = 2 To ActiveWorkbook.Sheets.Count
If ActiveSheet.Name <> "Base" Then
If Range("A1") > 0 Then Sheets("Base").Range("A" & Right(ActiveSheet.Name, 1)).EntireRow.Hidden = True
End If
Next
End Sub

Amicalement

Dan

Bonsoir,

Bonsoir, Dan

Si j'ai bien compris, dans le code du ThisWorkbook :

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> "base" Then
    If Target.Address = "$A$1" Then
        Sheets("base").Rows(Val(Right(Sh.Name, Len(Sh.Name) - 6))).Hidden = IIf(Target = "", False, True)
    End If
End If
End Sub

Si j'ai bien compris....

Bonne soirée à tous

Bonsoir,

Merci à Dan et à Cousinhub pour leurs réponses.

Dan,

J'ai essayé de placer ton code successivement sous ThisWorkBook, sous mes trois feuilles séparément, puis dans un module, mais ça ne fonctionne pas comme ça devrait ; il n'y a rien qui se passe lorsque je modifie les cellules A1 des feuilles "Ligne 1" et "Ligne 2".

Cousinhub,

ton code rempli exactement la fonction demandée.

Il ne me reste plus qu'à appliquer ce code à mon fichier réel.

Merci encore à tous deux et bonne soirée.

Bonjour,

J’ai essayé d’appliquer les codes proposés par Dan et à Cousinhub à mon fichier réel, mais j’ai quelques soucis.

Tout d’abord j’aurais dû mettre en ligne un exemple plus prés de mon fichier réel, deuxièmement j’ai demandé le contraire de ce que je désirais (la ligne devrait être masquée si la valeur est zéro, pas le contraire, mais cela aurait été facile à modifier) et troisièmement j’étais parti sur une idée assez compliquée (j’allais chercher sur une autre feuille une valeur déjà reportée sur celle concernée) !! Désolé !

Je me permets alors de poser une nouvelle question avec un nouveau fichier :

Quel code faut-il utiliser afin que les lignes 17, 18 et 19 de la feuille « Récapitulatif » soient masquées lorsque, respectivement, la valeur de la cellule F17, F18 et F19 est 0 ?

https://www.excel-pratique.com/~files/doc2/PKPost_Fictif.xls

Bonne journée à vous tous.

re,

Juste un truc dans ton fichier, la macro de cousinhub était mal placée. Dans la feuille Récapitulatif au lieu de Thisworkbook.

Essaie ce code à placer dans la feuille Récapitualtif, à la place de celle actuelle :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Macro dan pour Yvouille le 05/09/2009
Dim ws As String
If Not Intersect(Target, Range("F17,F18,F19")) Is Nothing Then
ws = Target.Offset(0, -5)
If Target = 0 Then
Sheets(ws).Range(Target.Address).EntireRow.Hidden = True
End If
End If
End Sub

Amicalement

Dan

Bonjour le Forum, Salut Dan,

Merci beaucoup pour ta réponse. J'ai essayé de placer le code tel qu'indiqué, mais ça ne fonctionne pas comme voulu : les lignes ne sont pas masquées quand la valeur des cellules F17, F18 ou F19 est 0.

Est-ce que je fais quoi que ce soit de faux ?

https://www.excel-pratique.com/~files/doc2/PKPost_Fictif_V2.xls

Bonnes salutations.

bonjour,

ça ne marche pas comme ça ! ...Si j'ai bien compris !!

En effet, si j'ai bien compris... il s'agit de masquer une ligne dans une feuille en fonction de la valeur d'une cellule dans une autre feuille.

On ne peut pas utiliser l'évènement Change de la feuille "Récapitulatif" car cet évènement n'intervient pas dans le cas de cellules liées.

Il n'y a donc que 2 solutions ;

Soit utiliser l'évènement Change des autres feuilles pour modifier la "Récap"

Soit utiliser l'évènement Activate de la Récap pour vérifier les cellules à surveiller.

C'est ce que fait ma démo

Les feuilles 1 et 2 réagissent à l'évènement Change et modifient la Récap, tandis que les feuilles 3, 4, 5 ne réagissent pas.

C'est l'évènement Activate de la feuille "Récap" qui modifie la visibilité des lignes. concernées (17,18,19).

Nota : Il est sans doute préférable de passer par l'évènement Change de chaque feuille. En tout cas c'est la méthode qui retient ma préférence, malgré sa (relative) lourdeur :

Il est en effet possible d'alléger le code en passant par ThisWorkbook... mais ça demande une mise au point un peu plus pointue ! Me faire signe si nécessaire...

A+

Salut Galopin,

Ton code répond exactement à mon attente (même si je n'ai pas tout compris à tes explications, c'est un peu du chinois pour moi) et je t'en remercie infiniment, de même que tous ceux qui m'ont également apporté leur aide.

Bon dimanche à tous.

re,

Juste une précision Yves.

Dans ton fichier le code était bien placé dans la feuille récapitulatif et fonctionne bien si tu mets un 0 dans la feuille récapitulatif en F17, F18 et F19.

Si maintenant, comme je le vois dans ton fichier, il s'agit de masquer la ligne dans la feuille récapitualtif en fonction d'un 0 obtenu par formule et venant d'une autre feuille, la macro que je t'ai proposée ne fonctionne évidemment pas.

Le code de Galopin te convenant, je ne vais pas en réinventer un autre.

Bon WE à toi.

Dan

Salut Dan,

Dans le fichier que j'ai placé à 7:03 ce matin, j'ai tout d'abord essayé ton code avec les formules en place dans les cellules F17, F18 et F19 de la feuille Récapitulatif. Mais j'ai aussi remplacé ces formules par des 0 mais les lignes ne se masquaient pas non plus. C'est pourquoi j'ai indiqué que ton code ne fonctionnait pas comme voulu.

J'ai peut-être mal posé ma question, mais je ne savais pas qu'il y avait une importance que les valeurs des cellules F17, F18 et F19 soient obtenues par des formules on non.

Désolé !

Ciao

Re,

Dans ton fichier, le code fonctionne très bien mais ne correspond pas à ce que tu demandais.

Fais ceci :

  • Dans la feuille Récapitulatif, entre un 0 en cellule F17 (pas un 0 venant de la formule)
  • Vas ensuite voir en feuille PK Post 3 (qui correspond à la donnée trouvée en A17 de la feuille Récapitulatif) et tu verras que la ligne 17 est cachée

C'est sûr ce n'est pas ce que tu demandais, donc normal que tu as cru que le code ne fonctionnait pas.

Bon WE

Dan

Ok, j'ai compris d'où venait mon erreur !

Merci beaucoup Dan pour ces explications complémentaires et pour ton aide en général.

A une prochaine.

Rechercher des sujets similaires à "masquer ligne fonction valeur"