XL 2013 Afficher / Masquer ligne en fonction valeur cellule

YANOU38

XLDnaute Occasionnel
Bonjour à tous,
J'ai essayé de me débrouiller tout seul, mais je ne trouve pas la solution...:confused:

Une liste déroulante en B11 => Choix A ou B ou C
Si A => Masquage lignes 16 à 21
Si B => Masquage lignes 13-14-15-19-20-21
Si C => Masquage lignes 13 à 18

Seul le choix "C" fonctionne...
Merci pour votre aide
 

Pièces jointes

  • Fiche Instrument.xlsm
    332.1 KB · Affichages: 7
Solution
Bonjour
En plus de la remarque de @natorp (enlever les espaces entre A;B;C dans la validation) ton code modifié

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = 0

Rows("13:21").EntireRow.Hidden = False
If Range("b11").Value = "A" Then Range("16:21").EntireRow.Hidden = True
If Range("b11").Value = "B" Then Range("13:15,19:21").EntireRow.Hidden = True
If Range("b11").Value = "C" Then Range("13:18").EntireRow.Hidden = True

Application.ScreenUpdating = -1
End Sub

Edit : Oups, @natorp a été plus rapide !

Chris401

XLDnaute Accro
Bonjour
En plus de la remarque de @natorp (enlever les espaces entre A;B;C dans la validation) ton code modifié

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = 0

Rows("13:21").EntireRow.Hidden = False
If Range("b11").Value = "A" Then Range("16:21").EntireRow.Hidden = True
If Range("b11").Value = "B" Then Range("13:15,19:21").EntireRow.Hidden = True
If Range("b11").Value = "C" Then Range("13:18").EntireRow.Hidden = True

Application.ScreenUpdating = -1
End Sub

Edit : Oups, @natorp a été plus rapide !
 

YANOU38

XLDnaute Occasionnel
Bonjour à tous,
J'ai tenté de faire évoluer mon classeur...
Dans la PJ, sur la Feuille "Base", on clique sur le bouton "Mise à jour", des feuilles nominatives se créent sur la base de la Feuille "Modele".
Mes cellules B11, sur ces feuilles créées, possèdent la macro qui devrait Afficher/Masquer la bonne option, mais rien ne se passe... :(
Merci pour votre aide.
 

Pièces jointes

  • Fiche instument.xls
    104 KB · Affichages: 2

Chris401

XLDnaute Accro
Bonjour
Le code ne doit pas être dans la feuille modèle mais dans un module
VB:
Sub Masque()
Application.ScreenUpdating = 0

Rows("13:21").EntireRow.Hidden = False
If Range("b11").Value = "A" Then Range("16:21").EntireRow.Hidden = True
If Range("b11").Value = "B" Then Range("13:15,19:21").EntireRow.Hidden = True
If Range("b11").Value = "C" Then Range("13:18").EntireRow.Hidden = True

Application.ScreenUpdating = -1
End Sub

Ensuite, tu ajoutes à ton code :
Code:
Sub Toto
.....
For j = 0 To UBound(Chp): ActiveSheet.Range(Chp(j)(2)) = oItms(1, j + 1): Next
  
 Call Masque
 
 Next i
 ....
 End Sub
 

Discussions similaires

Réponses
8
Affichages
657

Statistiques des forums

Discussions
314 015
Messages
2 104 563
Membres
109 080
dernier inscrit
Merilien