Bonjour,
Substitué une CombBox (activeX) au contrôle de formulaire initial. Plus facile à mettre en forme (tu semblais vouloir de gros caractères vu la taille...)
La liste des feuilles est établie en colonne B de la feuille qui contient le contrôle.
La colonne B est masquée.
La liste est nommée ListF en dynamique (voir Gestionnaire de noms).
Mécanisme :
Une procédure liste les feuilles et recompose la liste :
Sub RelisterFeuilles()
Dim i%, ws As Worksheet
[ListF].Offset(1).ClearContents
With [ListF]
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> .Worksheet.Name Then
i = i + 1: .Cells(i, 1) = ws.Name
End If
Next ws
End With
End Sub
Cette procédure est exécutée à l'ouverture du classeur et à l'activation de la feuille munie de la Combo.
A l'activation, la liste est réaffectée à la Combo (donc mise à jour si des changements ont eu lieu).
Une sélection dans la ComboBox a pour effet d'activer la feuille demandée (et la valeur est effacée de la Combo)
En cas de création de nouvelle feuille, de changement de nom ou de déplacement, au retour sur la feuille initiale, la liste sera remise à jour.
Private Sub Workbook_Open()
RelisterFeuilles
[ListF].Worksheet.Activate
End Sub
Private Sub Worksheet_Activate()
RelisterFeuilles
ComboBox1.ListFillRange = "ListF"
End Sub
Private Sub ComboBox1_Change()
Dim ff$
If ComboBox1.ListIndex > -1 Then
ff = ComboBox1.Value
Worksheets(ff).Activate
ComboBox1.ListIndex = -1
End If
End Sub
Il te reste à mettre en place un mécanisme de retour vers la feuille à Combo. Peut-être un double-clic sur une même cellule de chaque feuille, surveillé au niveau classeur,qui provoquerait ce retour ?
Cordialement.