Masquer/Afficher zone nommée par liste déroulante

  • Initiateur de la discussion Initiateur de la discussion YANOU
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

YANOU

XLDnaute Junior
Bonjour à tous,
Je voudrais masquer/afficher mes "zones nommées" en fonction de la valeur prise par la cellule L1 (liste déroulante).
Exemple : Si valeur L1 = PMIA => PMIA affichée / PMIB & PMIC masquées.
Merci pour votre aide.
 

Pièces jointes

"llo,
Question : comment comptes-tu les cacher ?

Ils sont sur une même feuille, pas de filtre, j'ai du mal à conceptualiser en l'état. J'imagine d'autres solutions, mais question utiles, tes tableaux auront toujours cette taille, ou bien cela va-t-il varier en fonction de leur contenu ?
 
Salut YANOU,
Peut être comme ceci
Dans un module Standard
Code:
Sub AfficheMasquePMI()
    Rows("7:41").EntireRow.Hidden = False               'Affiche toutes les lignes
    Select Case [L1]
        Case Is = "PMIA"
            Rows("20:30").EntireRow.Hidden = True       'Masque PMIB
            Rows("31:40").EntireRow.Hidden = True       'MASQUE PMIC
        Case Is = "PMIB"
            Rows("7:19").EntireRow.Hidden = True        'Masque PMIA
            Rows("31:40").EntireRow.Hidden = True       'MASQUE PMIC
        Case Is = "PMIC"
            Rows("7:19").EntireRow.Hidden = True        'Masque PMIA
            Rows("20:30").EntireRow.Hidden = True       'MASQUE PMIB
    End Select
End Sub
Et sur le changement de la feuille
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$L$1" Then
        Call AfficheMasquePMI
    End If
End Sub
En espérant que cela corresponde à ta demande
Voir la remarque au post#2 de DON_PETS
@+ Lolote83
 
Le nombre de ligne change, j'ai donc pensé nommer mes zones pour esquiver ce problème.
N'y connaissant pas grand chose en VBA et en se servant de votre code, peut-être comme cela (?) :
Range("PMIA").EntireRow.Hidden = True 'Masque PMIA
Range("PMIB").EntireRow.Hidden = True 'MASQUE PMIB
Merci pour votre aide.
 
Hello tous..
bon je vois que les solutions ont fusé..
du coup. suis en retard..

mais je poste quand meme. vu que c'est fait

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Not Intersect(Target, Range("L1")) Is Nothing Then

    With ActiveSheet
        .Range("PMIA").EntireRow.Hidden = True
        .Range("PMIB").EntireRow.Hidden = True
        .Range("PMIC").EntireRow.Hidden = True
        .Range(Target).EntireRow.Hidden = False
    End With
End If
Application.ScreenUpdating = True
End Sub


edit: tiens c'est marrant.. je viens de voir que les premières réponses datent de 13h39...
alors qu'au moment ou j'ai ouvert le post (il y a 5mn) il y avait 0 réponses.....????....??
serais je dans une faille temporelle? :-D
 
une modif du code qui devrait t'aider à comprendre..

VB:
Private Sub Worksheet_Change(ByVal Target As Range)
 Application.ScreenUpdating = False
If Not Intersect(Target, Range("N6")) Is Nothing Then

     With ActiveSheet
        .UsedRange.Offset(9, 0).EntireRow.Hidden = True
        On Error GoTo fin
        .Range("PMI" & Target).EntireRow.Hidden = False
        Application.ScreenUpdating = True
     End With
     Exit Sub
End If
fin:
MsgBox "la plage nommée: PMI" & Target & " n'existe pas"
 Application.ScreenUpdating = True
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
14
Affichages
170
Retour