MàJ CommandBar

Maivas

XLDnaute Junior
Hello tous le monde,

Imaginons une barre de menu personnalisée (CommandBar) qui se lance à l’ouverture du classeur(Procédure Workbook_Open dans ThisWorkbook) et qui contient une liste de choix des feuilles visibles du classeur (msoControlComboBox).
Cette liste permet d’avoir un accès rapide aux feuilles du classeur (Choix du nom d’un onglet dans la liste de choix -> Feuille demandée sélectionnée).
Ma barre de menu personnalisée contient un autre bouton (msoControlButton) qui me permet en un clique de Masquer ou Afficher 5 onglets.

Comment pourrais je mettre à jour ma liste de choix des onglets dans ma barre de menu personnalisée pour que quand l’ensemble des onglets (15 onglets) soient visible, il y est dans la liste le nom des 15 onglets et que quand seul 10 onglets sont visible [Après avoir cliqué sur mon bouton] seul le nom des 10 onglets soient dans la liste de choix ?

Merci

Maivas
 

Maivas

XLDnaute Junior
Re : MàJ CommandBar

Ok..Extrait de Code

Alors dans ThisWorkbook

Code:
Private Sub Workbook_Open()
    
    Public CmdBar1 As CommandBar
    Dim Bouton As CommandBarButton
    Dim Menu As CommandBarComboBox
    Dim ws As Object

    Call bibi
   
        'Barre de Suivi Budgétaire
        Set CmdBar1 = Application.CommandBars.Add(Name:="Budget", Position:=msoBarTop, Temporary:=True)      
             
        Set Bouton = CmdBar1.Controls.Add(Type:=msoControlButton)
        With Bouton
            .BeginGroup = True
            .Style = msoButtonIconAndCaption
            .FaceId = 1820
            .Caption = "Afficher / Masquer"
            .TooltipText = "Afficher / Masquer les feuilles"
            .OnAction = "Masquer"
        End With
        
        Set Menu = CmdBar1.Controls.Add(msoControlComboBox)
        For i = 1 To CpteFV
              Menu.AddItem Feuille(i)
        Next
        With Menu
            .BeginGroup = True
            .Style = msoComboLabel
            .Caption = "Onglets:"
            .TooltipText = "Accès Onglets"
            .DropDownWidth = -1
            .OnAction = "Choix_Onglets"
        End With
    
End Sub

Dans un module
Code:
Public Feuille(30) As String
Public CpteFV As Integer
Sub bibi()
Dim ws As Object
i = 0

        For Each ws In Worksheets
                    If ws.Visible = True Then
                        CpteFV = CpteFV + 1
                        i = i + 1
                        Feuille(i) = ws.Name
                    End If
        Next ws
End Sub

Code:
Public Sub Masquer()
    Dim ws As Object    
'Afficher / Masquer les onglets DSI
    Application.ScreenUpdating = False
    For Each ws In Worksheets
        If (ws.Name) Like "Hello"Then
            If ws.Visible = False Then
'Afficher
                ws.Visible = True
            ElseIf ws.Visible = True Then
'Masquer
                ws.Visible = False
            End If
        End If
    Next
    Application.ScreenUpdating = True  
End Sub
 

Discussions similaires

Réponses
10
Affichages
478

Statistiques des forums

Discussions
312 939
Messages
2 093 789
Membres
105 836
dernier inscrit
Frederic14