Masquer suivant le contenu de plusieurs cellules

Bonjour à tous,

Je nage depuis plusieurs jours car je n'arrive pas à masquer des lignes en fonction de plusieurs critères dans une même feuille Excel...

J'ai essayé de tout résumer dans le fichier ci-joint.

Vu qu'on ne peut qu'utiliser qu'une fois Worksheet_Change par feuille je n'arrive pas à m'en sortir...

Merci par avance de votre aide !

Bonsoir,

Plages nommées pour faciliter la chose...

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i%
    If Target.Address = "$F$3" Then
        For i = 1 To [Ligne].Rows.Count
            [Ligne].Rows(i).Hidden = (i > Target.Value)
        Next i
    ElseIf Not Intersect(Target, Range("I1:I5")) Is Nothing Then
        [Ligne].Rows(Target.Row).Hidden = (Target.Value = "NON")
    ElseIf Target.Address = "$F$13" Then
        [Resultat].Rows(1).Hidden = (Target.Value = "NON")
    ElseIf Not Intersect(Target, Range("F15:F17")) Is Nothing Then
        [Option].Rows(Target.Row - 14).Hidden = (Target.Value = "NON")
    End If
End Sub

Cordialement.

Merci beaucoup, cela m'a beaucoup avancé !

J'ai juste une dernière question : comment mettre à jour ma macro quand le contenu des cellules change ? Je m'explique si dans la case RESULTAT avec le choix OUI ou NON au lieu d'avoir une liste de choix entre OUI et NON, si je fais remplir cette case par une condition du style =SI(K13=1;"OUI";"NON") ma macro ne fait pas son travail sauf si je double clique sur la cellule et valide, comment puis-je faire pour qu'elle se mette à jour toute seule lorsque je change K13 ?

Merci encore !

Un changement de valeur affichée par une formule ne déclenche pas l'évènement Change, le contenu de la cellule n'a pas changé.

Cependant si la cellule modifie la valeur affichée, c'est qu'un changement est intervenu quelque part.

Il faut donc détecter le changement en K13 par exemple et tester la valeur de F13...

D'accord merci pour cette solution, pourrais-tu m'aider à formuler une solution dans ma macro ?

Je n'ai aucune idée comment faire... Merci par avance de votre aide préciseuse

ElseIf Target.Address = "$K$13" Then
        [Resultat].Rows(1).Hidden = (Target.Value <> 1)

Ce qu'il y a à changer.

Bonne soirée

Bonjour,

J'essaye de comprendre ce code mais c'est vrai que je ne maitrise pas beaucoup.

J'essaye de faire quelque chose de semblable

S'il te plait, ouvre ton propre sujet !

Et explique-toi mieux sur de quoi il retourne et quelles sont les règles... car je n'ai rien compris.

Merci pour la réponse,

En fait j'ai justement posté à la suite ici pour ne pas polluer le forum avec un sujet semblable.

Ma problématique est la suivante :

Tout par d'une sélection faite sur les cellules de B2 à B6.

B2 à une influence sur J13, J14,J15

B3 sur J16,J17,J18

B4 sur J19,J20,J21

B5 sur J22,J23,J24

et B6 sur J25,J26 et J27

Les cellules en B reportent aussi dans la colonne P, le nombre de lignes utilisées.

Je souhaitais reprendre le code plus haut en utilisant les valeurs de P2,3,4,5 et 6 pour masquer une ou 2 lignes par trio de J mais je n'y arrive pas.

Je remets un fichier avec des explications.

Squatter n'est pas une bonne pratique !

Rechercher des sujets similaires à "masquer suivant contenu"