Bonjour,
Je souhaite créer une liste déroulante où s'affiche le nom de différents onglets. Lorsque l'on clique sur un de ces noms, ça nous renvoie vers l'onglet souhaité.
J'ai récupéré des bouts de codes à droite à gauche et j'ai réussi à obtenir une liste déroulante qui permet d'aller sur l'onglet de son choix. Mais je n'arrive cependant pas à limiter cette liste à certains onglets que j'aurais choisi.
Comment puis-je modifier le code pour ne donner accès qu'à certains onglets ?
Voila mes modules :
Module 1 :
Private Sub Workbook_Open()
AjouterElementMenu
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
DeleteMenuItem
End Sub
Module 2
Sub AjouterElementMenu()
Dim ViewMenu As CommandBarPopup
Dim NewMenuItem As CommandBarButton
'Supprimer le menu s'il existe déjà
Call DeleteMenuItem
'Trouver le Menu Affichage
Set ViewMenu = CommandBars(1).Controls("Affichage")
If ViewMenu Is Nothing Then
MsgBox "Impossible d'ajouter l'élément de menu !"
Exit Sub
Else
Set NewMenuItem = ViewMenu.Controls.Add _
(Type:=msoControlButton)
With NewMenuItem
.Caption = "&Mon menu"
.OnAction = "AficheFeuille"
End With
End If
End Sub
Sub AficheFeuille()
UserForm1.Show
End Sub
Sub DeleteMenuItem()
On Error Resume Next
CommandBars(1).Controls("Affichage").Controls("Mon menu").Delete
End Sub
Et l'UserForm :
Option Explicit
Public OriginalSheet As Object
Private Sub UserForm_Initialize()
Dim SheetData() As String
Dim ShtNum As Integer
Dim ShtCnt As Integer
Dim Sht As Object
Dim LisPost As Integer
Set OriginalSheet = ActiveSheet
ShtCnt = ActiveWorkbook.Sheets.Count
ReDim SheetData(1 To ShtCnt, 1 To 4)
ShtNum = 1
For Each Sht In ActiveWorkbook.Sheets
If Sht.Name = ActiveSheet.Name Then _
LisPost = ShtNum - 1
SheetData(ShtNum, 1) = Sht.Name
Select Case TypeName(Sht)
Case "WorkSheet"
SheetData(ShtNum, 2) = "Feuil"
SheetData(ShtNum, 3) = Application.CountA(Sht.Cells)
End Select
ShtNum = ShtNum + 1
Next Sht
With ComboBox1
.ColumnWidths = "30 pt;30 pt; 40 pt;50 pt"
.List = SheetData
.ListIndex = LisPost
End With
End Sub
Private Sub ComboBox1_Change()
Sheets(ComboBox1.Value).Activate
End Sub
Merci d'avance,
Partager