Afficher ou masquer lignes d'une feuille en fonction du contenu cellule autre feuille

temprano

XLDnaute Nouveau
Bonjour,

je suis nouveau sur ce forum et débute à peine le VBA.

Je cherche à créer un fichier de saisie en conditionnant un certain nombre de cellules pour facilliter le remplissage et limiter les erreurs.

J'aimerai pour cela que certaines lignes s'affichent ou non en fonction de la valeur d'une cellule d'une autre feuille.

J'ai trouvé des bouts de codes mais ne maitrisant pas du tout VBA je n'ai pas encore le résultat que je souhaite :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
Rows.Hidden = False
Select Case Range("B2").Value
Case "M0": Rows("7:32").Hidden = True
Case "S1": Rows("8:32").Hidden = True
Case "M1": Rows("9:32").Hidden = True
Case "M2": Rows("10:32").Hidden = True
Case "M3": Rows("11:32").Hidden = True
Case "M4": Rows("12:32").Hidden = True
Case "M5": Rows("13:32").Hidden = True
Case "M6": Rows("14:32").Hidden = True
Case "M7": Rows("15:32").Hidden = True
Case "M8": Rows("16:32").Hidden = True
Case "M9": Rows("17:32").Hidden = True
Case "M10": Rows("18:32").Hidden = True
Case "M11": Rows("19:32").Hidden = True
Case "M12": Rows("20:32").Hidden = True
Case "M13": Rows("21:32").Hidden = True
Case "M14": Rows("22:32").Hidden = True
Case "M15": Rows("23:32").Hidden = True
Case "M16": Rows("24:32").Hidden = True
Case "M17": Rows("25:32").Hidden = True
Case "M18": Rows("26:32").Hidden = True
Case "M19": Rows("27:32").Hidden = True
Case "M20": Rows("28:32").Hidden = True
Case "M21": Rows("29:32").Hidden = True
Case "M22": Rows("30:32").Hidden = True
Case "M23": Rows("31:32").Hidden = True
Case "M24": Rows("32").Hidden = True
End Select
End If
End Sub

Je voudrais par exemple que les lignes 7 à 32 de ma feuille CRF soient automatiquement masquées quand la cellule F15 de ma feuille ID affiche la valeur M0 (menu déroulant).

Je sais que le nom de la cellule B2 dans mon code n'est pas bon mais je ne parviens pas à faire référence à la cellule F15 de la feuille ID.
Le code fonctionne quand j'entre directement la valeur M0 dans la cellule B2 de la feuille CRF

Si qqun peut m'aider ?
D'avance merci,

Amicalement,
 

Pièces jointes

  • Fiche monitorage CRF_V0.7.xls
    146 KB · Affichages: 217

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Afficher ou masquer lignes d'une feuille en fonction du contenu cellule autre fe

Bonjour Temprano, et bienvenue sur le forum

avec ceci:
Select Case Sheets("ID").Range("F15").Value

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$2" Then
  Rows.Hidden = False
  Select Case Sheets("ID").Range("F15").Value
   Case "M0":    Rows("7:32").Hidden = True
   Case "S1":    Rows("8:32").Hidden = True
   Case "M1":    Rows("9:32").Hidden = True
............... et le reste
à+
Philippe
 

temprano

XLDnaute Nouveau
Re : Afficher ou masquer lignes d'une feuille en fonction du contenu cellule autre fe

Bonjour,

et merci phlaurent55

bon entre-temps je me suis affranchi de ce problème en ne travaillant que sur une feuille mais j'aurai probablement besoin de ta solution plus tard.

Par contre maintenant je cherche à masquer certaines lignes en fonction des valeurs de 2 cellules (O1 et Q1) :
Si ma valeur en O1 est à M0 je soushaite masquer les lignes 11:13
ET (LES DEUX ACTIONS SIMULTANEMENT)
Si ma valeur en Q1 est en M3 je souhaite masquer les lignes 19:40

Pour le moment mon code ci-dessous fait soit l'un soit l'autre

D'avance merci pour votre aide...

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$Q$1" Then
Rows.Hidden = False
Select Case Range("Q1").Value
Case "M0": Rows("15:40").Hidden = True
Case "S1": Rows("16:40").Hidden = True
Case "M1": Rows("17:40").Hidden = True
Case "M2": Rows("19:40").Hidden = True
Case "M3": Rows("19:40").Hidden = True
Case "M4": Rows("20:40").Hidden = True
Case "M5": Rows("21:40").Hidden = True
Case "M6": Rows("22:40").Hidden = True
Case "M7": Rows("23:40").Hidden = True
Case "M8": Rows("24:40").Hidden = True
Case "M9": Rows("25:40").Hidden = True
Case "M10": Rows("26:40").Hidden = True
Case "M11": Rows("27:40").Hidden = True
Case "M12": Rows("28:40").Hidden = True
Case "M13": Rows("29:40").Hidden = True
Case "M14": Rows("30:40").Hidden = True
Case "M15": Rows("31:40").Hidden = True
Case "M16": Rows("32:40").Hidden = True
Case "M17": Rows("33:40").Hidden = True
Case "M18": Rows("34:40").Hidden = True
Case "M19": Rows("35:40").Hidden = True
Case "M20": Rows("36:40").Hidden = True
Case "M21": Rows("37:40").Hidden = True
Case "M22": Rows("38:40").Hidden = True
Case "M23": Rows("39:40").Hidden = True
Case "M24": Rows("40").Hidden = True
End Select
End If
If Target.Address = "$O$1" Then
Rows.Hidden = False
Select Case Range("O1").Value
Case "M0": Rows("11:13").Hidden = True
End Select
End If
End Sub
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Afficher ou masquer lignes d'une feuille en fonction du contenu cellule autre fe

Re,

essaie comme ceci:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$Q$1" Or Target.Address = "$O$1" Then
  Rows.Hidden = False
  Select Case Target.Value
   Case "M0":    Rows("15:40").Hidden = True
   Case "S1":    Rows("16:40").Hidden = True
   Case "M1":    Rows("17:40").Hidden = True
   Case "M2":    Rows("19:40").Hidden = True
   Case "M3":    Rows("19:40").Hidden = True
   Case "M4":    Rows("20:40").Hidden = True
   Case "M5":    Rows("21:40").Hidden = True
   Case "M6":    Rows("22:40").Hidden = True
   Case "M7":    Rows("23:40").Hidden = True
   Case "M8":    Rows("24:40").Hidden = True
   Case "M9":    Rows("25:40").Hidden = True
   Case "M10":    Rows("26:40").Hidden = True
   Case "M11":    Rows("27:40").Hidden = True
   Case "M12":    Rows("28:40").Hidden = True
   Case "M13":    Rows("29:40").Hidden = True
   Case "M14":    Rows("30:40").Hidden = True
   Case "M15":    Rows("31:40").Hidden = True
   Case "M16":    Rows("32:40").Hidden = True
   Case "M17":    Rows("33:40").Hidden = True
   Case "M18":    Rows("34:40").Hidden = True
   Case "M19":    Rows("35:40").Hidden = True
   Case "M20":    Rows("36:40").Hidden = True
   Case "M21":    Rows("37:40").Hidden = True
   Case "M22":    Rows("38:40").Hidden = True
   Case "M23":    Rows("39:40").Hidden = True
   Case "M24":    Rows("40").Hidden = True
   End Select
End If
End Sub
je n'ai pas testé

à+
Philippe
 

Tata Yoyo

XLDnaute Nouveau
Re : Afficher ou masquer lignes d'une feuille en fonction du contenu cellule autre fe

Bonsoir

je n'ai toujours pas réussi à solutionner mon pb si qqun peut m'aider...
d'avance merci

Jérôme

Petits bouts de code qui pourrait se révéler utile pour masquer les lignes d'une feuille en fonction de la valeur d'une cellule dans une autre feuille:


Private Sub Worksheet_Activate()
' à placer dans la feuille que l'on veut réduire (Feuil2)
If [D26] < 20000 Then CacheLignesActives Else LignesActives
End Sub

Sub CacheLignesActives()
' à placer dans un module, masque les lignes 30 à 160 de la feuille 2 et place le curseur dans la cellule D8
Rows("30:160").Select
Selection.EntireRow.Hidden = True
Range("D8").Select
End Sub
'****************
Sub LignesActives()
' à placer dans un module, affiche les lignes 30 à 160 de la feuille 2 et place le curseur dans la cellule D8
Rows("30:160").Select
Selection.EntireRow.Hidden = False
Range("D8").Select
End Sub

Private Sub Worksheet_Activate()
' à placer dans la premiere feuille (Feuil1)
Range("E17").Select
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
' à placer dans la premiere feuille (Feuil1)
If Target.Address(ReferenceStyle:=xlA1) <> "$E$17" Then Exit Sub
If [E17] <> "" Then Sheets("Feuil2").Select
ActiveWindow.SmallScroll Down:=-15
End Sub

Explications :
La cellule E17 de la premiere feuille (Feuil1) est la cellule dans laquelle on saisit la valeur (dans ce cas > ou < à 20000)
La cellule D26 de la seconde feuille (Feuil2) reçoit la valeur de la cellule E17 de la premiere feuille (=SI(Feuil1!E17="";0;Feuil1!E17)
lorsque la feuille 2 est activée alors les lignes 30 à 160 sont masquées ou affichées selon la valeur de la cellule
 

Pièces jointes

  • Classeurv1.xls
    28 KB · Affichages: 70
  • Classeurv1.xls
    28 KB · Affichages: 72
  • Classeurv1.xls
    28 KB · Affichages: 72
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 086
Messages
2 085 197
Membres
102 814
dernier inscrit
JLGalley