Masquer des lignes en fonction d'une valeur dans une cellule

Bonjour à tous,

J'aimerai masquer des lignes en fonction de la valeur dans une cellule :

- Si D4 = Oui alors la ligne 6 est masquée

- Si D4 = Non alors la ligne 6 n'est pas masquée.

Avec le code suivant j'arrive à atteindre le résultat souhaité mais je suis obligée d'exécuter la macro à chaque fois :

Option Explicit
Sub Masqueligne()
 If Sheets("Feuil1").Range("D4") = "Oui" Then
    Rows("6:6").Hidden = True
   Else
   If Sheets("Feuil1").Range("D4") = "Non" Then
    Rows("6:6").Hidden = False
   End If
   End If
End Sub

Comment dois-je faire pour que la macro s'exécute seule à l'ouverture du document et qu'elle s'exécute à chaque fois que je modifie la valeur de la cellule D4 avec la liste déroulante ?

Merci d'avance pour votre aide

PS : Je suis débutante :)

89classeur1.xlsm (14.28 Ko)

Bonjour,

Ta macro placée dans le module était bien, même si dans l'absolu un truc comme ceci peut également aller :

Option Explicit
Sub Masqueligne()
 If Sheets("Feuil1").Range("D4") = "Oui" Then Rows("6:6").Hidden = True
   If Sheets("Feuil1").Range("D4") = "Non" Then Rows("6:6").Hidden = False
End Sub

Ce code, qui fonctionne, doit être lancé à l'ouverture du fichier. Il faut que donc que tu places le code suivant dans l'objet thisworkbook :

Private Sub Workbook_Open()
Call Masqueligne
End Sub

Le code ci-dessus permet de lancer la macro qui se nomme Masqueligne à l'ouverture du fichier.

Ensuite, tu veux que le changement s'effectue également lorsque tu fais varier ta cellule D4. Cela se passe donc au niveau de ta feuille. Dans la zone feuil1, tu écris le code suivant :

Private Sub Worksheet_Change(ByVal Target As Range)
Call Masqueligne
End Sub

Enfin quand je dis écrire le code, quasi tout se fait automatiquement :

essai

Merci beaucoup pour les lignes de code. Cela a très bien fonctionné pour le fichier test.

Par contre, sur mon fichier source, les lignes se masquent bien mais ne s'affichent plus quand je choisis l'autre valeur dans le menu déroulant ...

J'ai copié une partie de mon fichier source sur le fichier test et cela fonctionne.

Je ne comprends pas que que la macro fonctionne à moitié sur mon fichier source et totalement sur le fichier test.

Auriez-vous une idée ?

Merci d'avance

Bonjour,

Hier j'aurais pu le dire mais, manque de chance, ma boule de cristal est tombée en panne dans la nuit.

Le fichier d'origine, dépouillé de ses eventuelles données confidentielles, permettrait de résoudre cette énigme.

Je vous joins le fichier source.

J'ai également une autre interrogation. Etant donné que j'ai plusieurs listes dans le tableur, à chaque fois que je choisis une autre option dans une liste non concernée par le programme Masqueligne, la macro s'exécute quand même.

Merci d'avance

124fichier-source.xlsm (19.83 Ko)

Ben oui, forcément si plusieurs cellules sont concernées, on ne fonctionne pas forcément pareil. Il aurait été bien de préciser cela au départ.

Aussi, les cellules fusionnées en colonnes G et H sont une très mauvaise idée ...

Et tu avais écrit oui avec un espace dans ta zone de liste. Que d'erreurs qui compliquent la tâche et auxquelles il faut vraiment faire attention si tu ne veux pas perdre des heures, et faire perdre du temps à d'autres par la suite.

Une fois les fusions enlevées, ton "Oui" modifié dans ta zone de liste ... Exemple de code à mettre dans feuil1 :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("F7")) Is Nothing Then
    Select Case Target
    Case "oui"
        Rows("9:9").Hidden = False
    Case Else
        Rows("9:9").Hidden.Hidden = True
    End Select
End If

If Not Intersect(Target, Range("F19")) Is Nothing Then
    Select Case Target
    Case "Oui"
        Rows("21:23").Hidden = False
    Case Else
        Rows("21:23").Hidden = True
    End Select
End If
End Sub

Par contre du coup je ne sais pas comment faire pour qu'il se lance à l'ouverture du fichier. Si quelqu'un passe par-là, je suis preneur de l'info.

Tout marche !

Merci beaucoup pour votre aide.

Désolée de ne pas avoir été assez précise au départ. Je le saurai pour la prochaine fois.

Bonne journée

Bonjour,

Merci pour ce retour !

Pas de souci, au départ on ne peut pas savoir ce qui fait une différence ou pas.

Pour ce qui est de ce fichier, je ne suis pas sûr que tu veuilles vraiment que la macro se lance à l'ouverture, si ? À partir du moment où ça se lance bien quand tes cellules changent.

Effectivement, il n'est pas nécessaire que la macro se lance à l'ouverture à partir du moment que le changement se fait lorsque les valeurs de mes cellules changent.

Encore Merci !

Rechercher des sujets similaires à "masquer lignes fonction valeur"