XL 2013 VBA - Masquer des lignes en fonction d'une cellule

kaisermpt

XLDnaute Occasionnel
Bonjour,

Je vous sollicite pour un code VBA a priori simple.

En effet, selon la réponse à une cellule, des lignes doivent être masquées

Ainsi dans mon fichier, si D17 = 0, alors les lignes 21 à 37 doivent être masquées.
si D17 = 1, alors les lignes 27 à 37 doivent être masquées.
si D17 = 2, alors les lignes 33 à 37 doivent être masquées.
SINON TOUT AFFICHER

Merci d'avance pour votre aide.

@+

Sébastien
 

Pièces jointes

  • FICHE TEST2.xlsm
    13.6 KB · Affichages: 4

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Kaiser, bonjour le forum,

Essaie avec ce code à placer dans le composant VBA de l'onglet MODELE :

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False 'masque le rafrîchissement d'écran
If Target.Address <> "$D$17" Then Exit Sub 'si la cellule modifiée n'est pas D17 sort de la procédure
Rows.Hidden = False 'affiche toutes les lignes
Select Case Target.Value 'agit en fonction de la valeur de D17
    Case "" 'cas ou elle est effacée (rien ne se passe)
    Case 0 'cas 0
        Rows(21 & ":" & 37).Hidden = True 'masque les lignes 21 à 37
    Case 1 'cas 1
        Rows(27 & ":" & 37).Hidden = True 'masque les lignes 27 à 37
    Case 2
        Rows(33 & ":" & 37).Hidden = True 'masque les lignes 33 à 37
    Case Else 'tou les autre cas (rien ne se passe)
End Select 'fin de l'action en fonction de la valeur de D17
Application.ScreenUpdating = True 'affiche les rafrîchissements d'écran
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil,

Une variante syntaxique (qui semble fonctionner)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Address <> "$D$17" Then Exit Sub
If Target > 2 Or Not IsNumeric(Target) Then Exit Sub: Rows.Hidden = 0
Rows(Choose((Target + 2) - 1, "21:37", "27:37", "33:37")).Hidden = -1
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 174
Messages
2 085 942
Membres
103 053
dernier inscrit
Beubax