Menu / sous-menu VBA

Bonjour et une très bonne année 2024 !

Novice en langage VBA j'ai créé un menu / sous-menu dans mon fichier excel pour naviguer dans les feuilles rapidement grace à une vidéo trouver sur le net.

Voici une parie du code

Sub Squelette()
Feuil1.Shapes("Squelette").Visible = True
Feuil1.Shapes("Nom").Visible = False
Feuil1.Shapes("MC").Visible = False
Feuil1.Shapes("Divers").Visible = False
Feuil1.Shapes("N_TSD").Visible = False
Feuil1.Shapes("N_TSF").Visible = False
Feuil1.Shapes("N_TKD").Visible = False
Feuil1.Shapes("N_TKF").Visible = False
Feuil1.Shapes("MC_TSD").Visible = False
Feuil1.Shapes("MC_TSF").Visible = False
Feuil1.Shapes("MC_TKD").Visible = False
Feuil1.Shapes("MC_TKF").Visible = False
End Sub

Ce menu fonctionne très bien sur une feuille (feuil1). Je souhaiterai pouvoir dupliquer ce menu sur toutes les feuilles de mon classeur pour ne pas à avoir à repasser par la feuille 1 pour y accéder ?

Merci de votre aide.

Bone journée

53menu.zip (778.59 Ko)

Bonjour, de la manière dont vous avez pratiquez ; il vous faudra dupliquer tous vos code vba car les événements clic de feuilles seront différents.

Vous devriez créer un Userform qui s'ouvre à l'appel d'un bouton et dans ce userform créer votre sélecteur de page.

Bonjour et meilleurs voeux

Ci joint ma solution (avec un userform)

62menu-v1.zip (846.16 Ko)

A+ François

Ps Perso je mettrai plus une liste déroulante (combobox) par type

Bonjour Jean04, Le Fil,

Meilleurs vœux 2024.

Ci-dessous quelques lignes à placer dans la partie code du Workbook.

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
For I = 1 To Sheets.Count
If Sheets(I).Name <> Sh.Name Then Sheets(I).Visible = False
Next I
End Sub

Le premier onglet étant visible, faire un clic droit sur celui-ci et dans la fenêtre alors ouverte choisir Afficher... puis sélectionner la feuille à montrer.

Toutes les autres feuilles hormis celle à afficher passeront au statut non-visible.

Merci beaucoup pour vos réponses

La solution de Fanfan38 me parait la plus simple pour ma faible connaissance du VBA !

X cellus, je vais essayer de comprendre ce que tu proposes !

Suite,

Voilà en image ci-dessous. Il n'existe qu'une feuille d'afficher dans le classeur. Donc la feuille active. Le Clic droit (ici sur Sommaire) permet à la fenêtre ci-dessous de montrer le menu auquel on va sélectionner la 9ième ligne. Celle Afficher... Ce qui va faire apparaître la liste de toutes les feuilles masquées. Et tu pourras choisir celle que tu souhaites démasquer.

image

La macro est à insérer dans la partie WorkBook. Donc comme ci-dessous. Faire clic droit sur la ligne en surbrillance bleue et mettre les lignes de code présentées.

image

Evidemment, tu n'auras pas besoin de ta macro Squelette avec cette procédure.

X Cellus - merci pour le tuto j'ai tout compris !

Salut,

Et pourquoi pas utiliser le ruban :

Bon je sais cela risque d'être dur pour un novice mais bon je mets l'exemple quand même.

Edit :

J'ai modifié le xlm pour ajouter un menu déroulant qui pourrait te convenir.

Re,

Nouvelle version adaptée à ton fichier...

71listsheets-v2.zip (451.79 Ko)

Bonjour Jean-Paul

C'est vraiment ce que je recherche, et en plus tu as tout paramétré c’est super !

Merci beaucoup

Re,

Y'a pas de quoi,

Un petit pouce en l'air fait toujours plaisir

Rechercher des sujets similaires à "menu vba"