Sub Initialiser_le_Menu()
Dim n As Integer
Const MonMenu As String = "Nom_de_mon_Menu"
Rem Supprime le menu s'il est déjà en place, pour éviter une erreur
On Error Resume Next
Application.CommandBars(MonMenu).Delete
On Error GoTo 0
Rem Crée le menu en fonction des feuilles existantes
Application.CommandBars.Add(MonMenu, msoBarTop, False, True).Visible = True
With Application.CommandBars(MonMenu)
.Controls.Add Type:=msoControlButton, before:=1
.Controls(1).Caption = "ACTIVER UNE FEUILLE"
.Controls(1).Style = msoButtonCaption
.Controls(1).OnAction = "Info_Activer_Feuille"
For n = 1 To ThisWorkbook.Sheets.Count
.Controls.Add Type:=msoControlButton, before:=n + 1
.Controls(n + 1).Caption = ThisWorkbook.Sheets(n).Name
.Controls(n + 1).Style = msoButtonCaption
.Controls(n + 1).OnAction = "Afficher_Feuille"
.Controls(n + 1).BeginGroup = True
Next
End With
End Sub
Sub Info_Activer_Feuille()
MsgBox "Cliquez sur le bouton de la feuille à activer", 64, "ACtiver une feuille"
End Sub
Sub Afficher_Feuille()
Dim NomFeuille As String
NomFeuille = Application.CommandBars.ActionControl.Caption
Rem affiche la feuille demandée ou renvoie à l'étiquette "pb:" si la feuille a été supprimée ou renommée
On Error GoTo pb
ThisWorkbook.Sheets(NomFeuille).Activate
On Error GoTo 0
Exit Sub
pb:
Rem Alerte et réinitialise le menu
MsgBox "Cette feuille a été supprimée ou son nom a été changé !", 64, "Feuille supprimée"
On Error GoTo 0
Initialiser_le_Menu
End Sub