Masquer des lignes en fonction du contenu d'une cellule

Bonjour,

1. Je voudrais savoir comment je peux masquer plusieurs lignes d'une feuille en fonction du contenu d'une cellule ?

Exemple: masquer les lignes 259 à 310 si la cellule H4 = "Formation Continue"

2. Je voudrais aussi savoir comment je peux masquer plusieurs lignes d'une feuille en fonction du contenu d'une cellule sur une autre feuille du classeur ?

Exemple: Masquer le lignes 48 à 52 de la feuille A si la cellule H4 de la feuille B = "Formation Continue"

Je me doute que je dois passer par VBA mais je ne sais pas comment.

Merci de votre aide.

Johan

Bonjour

Pour le premier cas, Code dans un Module associé à un Bouton

Sub Masquer_Plage()
Set MaPlage = Worksheets("Feuil1").Rows("259:310")
If Range("H4") = "Formation Continue" Then MaPlage.EntireRow.Hidden = True
End Sub

Pour le premier cas, Code dans un Module associé à un Bouton

Sub Masquer_Plage()
Set MaPlage = Worksheets("Feuil1").Rows("48:52")
    If Worksheets("Feuil2").Range("H4") = "Formation Continue" Then MaPlage.EntireRow.Hidden = True
End Sub

Pour tout re-afficher

Sub Afficher_Tout()
    Cells.Select
    Selection.EntireRow.Hidden = False
    Range("H4").Select
End Sub

Sur ce fichier, le second exemple

Cordialement

25exemple.xlsm (19.34 Ko)

Bonjour

Après l'exemple précédent de Macros associées à un Bouton, un exemple "Automatique" dès que "Formation Continue" est sélectionné en H4

Code de Feuil1

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("H4")) Is Nothing Then
Worksheets("Feuil1").Rows("259:310").EntireRow.Hidden = True
End If
End Sub

Cordialement

17exemple-v2.xlsm (19.03 Ko)

En effet, j'ai oublié de recopier la ligne condition.

If Range("H4") = "Formation Continue" Then Worksheets("Feuil1").Rows("259:310").EntireRow.Hidden = True

Bonjour Johan0203, Amadéus,

Exemple avec code feuille

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("H4")) Is Nothing Then
If Range("H4") = "Formation Continue" Then Range("A259:A310").EntireRow.Hidden = True Else Range("A259:A310").EntireRow.Hidden = False
End If
End Sub

Bonne continuation.

Bonjour,

Merci beaucoup pour votre réactivité !

Par contre, j'ai un message d'erreur car j'ai déjà une autre requete sur cette feuille (erreur de compilation)...

Merci pour votre aide.

Johan

image

A nouveau,

Il ne faut pas avoir deux fois le Private Sub WS_Change. Seulement une fois.

Reprends sous la dernière ligne Feuille 10 (celle après le Else)

Worksheets("Feuil1").Rows("259:310").EntireRow.Hidden = True

En supposant que si ce n'est pas Apprentissage c'est Formation Continue.

Re,

ça ne fonctionne pas..

image

Ton code se trouve bien dans la feuille 1?

Inscris alors. Sinon on peut scinder avec un code module si besoin.

Feuil1.Rows("259:310").EntireRow.Hidden = True

C'est de ma faute, j'ai mal saisie, je vous remercie pour votre précieuse aide !

voici le FINAL ! :

image

Ne pas oublier de clore le sujet.

Rechercher des sujets similaires à "masquer lignes fonction contenu"