Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Macro qui permette d'afficher les feuilles à partir d'une liste déroulante

MCO2406

XLDnaute Nouveau
Bonjour,
Je souhaiterais faire apparaitre une feuille selon la sélection dans un menu déroulant. Les autres feuilles restant masquées.
Exemple:
Mon menu déroulant est en C2 et il va chercher les données dans une liste en colonne A de mon onglet "1_MENU".

La liste déroulante est :
AAA
AAAA
BB
BBBB
CC
CCC

Je souhaiterais que la feuille qui se nomme "CCC" s'affiche quand je selectionne "CCC" dans le menu déroulant en C2 de la feuille "1_MENU"

A force de tout tester et supprimer ma macro s'arrête désormais à :
Sub Macro1_TestMenuDeroulant_choixMag()
' Macro1_TestMenuDeroulant_choixMag Macro
Sheets("1_MENU").Select
Sheets("CCC").Visible = True
Sheets("1_MENU").Select
Sheets("AAA").Visible = True
End Sub

comment écrire la sélection en C2 dans le menu déroulant?
Je vous remercie
 

Pièces jointes

  • 2024_TEMPLATE_base MERCH.xlsm
    31.8 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour MCO,
Un essai avec la macro événementielle :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [C2]) Is Nothing Then
         Application.ScreenUpdating = False
         For Each F In Worksheets
            If F.Name <> "1_MENU" Then Sheets(F.Name).Visible = 2
        Next F
        On Error Resume Next
        Sheets(Target.Value).Visible = -1
        Sheets(Target.Value).Select
    End If
Fin:
Application.ScreenUpdating = True
End Sub
Il suffit de changer la valeur en C2 pour accéder à la feuille demandée.
( Si vous voulez que les feuilles restent accessibles via clic droit sur onglet et Afficher alors remplacer le paramètre 2 par 0 dans Sheets(F.Name).Visible )
 

Pièces jointes

  • 2024_TEMPLATE_base MERCH.xlsm
    33.9 KB · Affichages: 6

patty58

XLDnaute Occasionnel
Bonjour MCO2406
Personnellement, si j'ai compris ce que tu veux , je ferais ceci : mettre l'évènement change dans ta feuille 1_MENU ainsi :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count > 1 Then Exit Sub
    If Target.Address = "$C$2" Then
        Choix = Target
        Sheets(Choix).Activate
    End If
End Sub
Bonne soirée
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…