Bonjour, Salut Banzai64,
Un conseil tout d'abord. Inscrit dans ton profil la version Excel utilisée. Ceci nous permettra de tester sur une version identique.
Tiens, j'ai récupérer un code que j'ai adapté selon ton besoin. Voici le code :
Le code suivant à mettre dans le module "ThisWorkbook" :
Private Sub Workbook_Open()
LeNombre = Worksheets.Count
CreerLeMenuFeuilles (LeNombre)
End Sub
Et dans un module commun (Module1 par exemple) le code suivant :
Public LeNombre As Integer
Public Const cTag As String = "SpecialMisange"
Sub CreerLeMenuFeuilles(Nbf As Integer)
With Application.CommandBars
If Not .FindControl(Tag:=cTag) Is Nothing Then
.FindControl(Tag:=cTag).Delete
End If
End With
Set MenuFeuilles = Application.CommandBars(1).Controls.Add(msoControlPopup, , , , True)
With MenuFeuilles
.Caption = "&Menu Feuilles"
.Tag = cTag
.BeginGroup = False
End With
Set OptionsMenuFeuilles = MenuFeuilles.Controls.Add(msoControlPopup, , , , True)
With OptionsMenuFeuilles
.Caption = "Options"
Set Option1 = .Controls.Add(msoControlButton, 1, , , True)
With Option1
.Caption = "Afficher toutes les feuilles"
.OnAction = "ToutesLesFeuilles"
End With
Set Option2 = .Controls.Add(msoControlButton, 1, , , True)
With Option2
.Caption = "Définir le nombre de feuilles à afficher"
.OnAction = "NombredeFeuilles"
End With
End With
Select Case Nbf
Case Is = 0
ToutesLesFeuilles
Case Is > ThisWorkbook.Sheets.Count
ToutesLesFeuilles
End Select
For i = 1 To Nbf
If Sheets(i).Visible = True Then
With MenuFeuilles
NF = "Feuille" & i
Set NF = .Controls.Add(msoControlButton, 1, , , True)
With NF
.Caption = Sheets(i).Name
.OnAction = "ActiverLaFeuille"
End With
End With
End If
Next i
End Sub
Sub ToutesLesFeuilles()
CreerLeMenuFeuilles (ThisWorkbook.Sheets.Count)
End Sub
Sub NombredeFeuilles()
LeNombre = Application.InputBox("Combien de feuilles souhaites-tu afficher ?", _
"Option menu Feuilles", , , , , , 1)
Select Case LeNombre
Case Is > ThisWorkbook.Sheets.Count
ToutesLesFeuilles
Case Is = 0
ToutesLesFeuilles
Case Is > 0 < ThisWorkbook.Sheets.Count
Nbf = LeNombre
End Select
CreerLeMenuFeuilles (LeNombre)
End Sub
Sub ActiverLaFeuille()
CommandBars("Workbook tabs").ShowPopup
End Sub
Cela ne va pas améliorer les nombres de clique à faire. Mais tu aura ce que tu souhaitait. Teste et dis-nous.
NB : Les interfaces imposées par MS ne se modifient pas comme on le souhaite. On peut toujours proposer à Mircrosoft.