Créer une nouvelle barre de menu

leaemileemma Messages postés 38 Date d'inscription   Statut Membre Dernière intervention   -  
leaemileemma Messages postés 38 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je désire créer une nouvelle barre de menu, chose que j'avais déjà réalisé dans le temps. mais je ne comprends pas le code qui suit ne fonctionne pas : la barre n'apparaît pas !!
Private Sub Workbook_Open()
    Dim Menu
    Dim Commande
    Dim Barre
    Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
    Application.DisplayFormulaBar = False 'masquage de la barre de formule
    Application.DisplayStatusBar = Not Application.DisplayStatusBar  'masquage de la barre d'état
    ActiveWindow.DisplayWorkbookTabs = False  ' masquage des onglets et empêche de naviguer entre les feuilles
    ActiveWindow.DisplayHeadings = False   ' masquage des entêtes de lignes et de colonnes
    ActiveWindow.DisplayHorizontalScrollBar = False   ' Masquage de l'ascenceur horizontal
    ActiveWindow.DisplayVerticalScrollBar = False   ' masquage de l'ascenceur vertical

    'Pour créer la barre de commande
    Set Barre = Application.CommandBars.Add("MaBarre", msoBarTop, True, True)  'true pour barre temporaire
    'pour ajouter un menu
    Set Menu = Barre.Controls.Add(Type:=msoControlPopup)
        
        'Ajouter une commande au menu
        With Menu
            .Caption = "Mes commandes" 'Caption du menu

            Set Commande = Menu.Controls.Add(msoControlPopup)
               With Commande
                    .Caption = "Page1"  'Caption de la commande
                    .OnAction = "Macro1"   'Nom de la macro à exécuter
               End With
            Set LaCommande = Nothing
        End With

    Set Menu = Nothing
    Set Commande = Nothing
    
    'Pour afficher la barre de commande
    Application.CommandBars("MaBarre").Visible = True
End Sub


je ne comprends pas pourquoi
Merci de m'expliquer mon ou mes erreur(s)
Bonne soirée
Jacques

2 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    a mettre dans ThisWorkbook:

    Option Explicit
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     'Pour supprimer la barre de commande à l   a fermeture
        Application.CommandBars("MaBarre").Delete
    End Sub
    Private Sub Workbook_Open()
        Dim Menu
        Dim Commande
        Dim Barre
       'Pour créer la barre de commande
        Set Barre = Application.CommandBars.Add("MaBarre", msoBarTop, True, True)  'true pour barre temporaire
        'pour ajouter un menu
        Set Menu = Barre.Controls.Add(Type:=msoControlPopup)
            
            'Ajouter une commande au menu
            With Menu
                .Caption = "Mes commandes" 'Caption du menu
    
                Set Commande = Menu.Controls.Add(msoControlPopup)
                   With Commande
                        .Caption = "Page1"  'Caption de la commande
                        .OnAction = "Macro1"   'Nom de la macro à exécuter
                   End With
            End With
    
        Set Menu = Nothing
        Set Commande = Nothing
        
        'Pour afficher la barre de commande
        Application.CommandBars("MaBarre").Visible = True
    End Sub
    
    


    ce qui donne ceci



    Voilà
    0
  2. leaemileemma Messages postés 38 Date d'inscription   Statut Membre Dernière intervention  
     
    Bonsoir,

    Merci pour ta proposition qui évidemment fonctionne parfaitement.
    Mais malheureusement je suis exigent : je veux ne faire apparaître que la nouvelle barre de commande, l'ancienne, celle d'excell, disparaissant.
    Je sais que j'avais réussi cela lors de la création d'un produit dans les années 2006, mais je ne peux plus y faire référence car ce produit, trop vieux, je l'ai supprimé.
    Moralité il faut toujours conserver ses réalisations et comme le proverbe le dit "c'est avec les vieilles marmites que l'on fait les meilleures soupes"
    Bref j'ai biaisé mon problème en utilisant des formulaires .... un peu plus de travail, c'est tout.
    Je ne ferme pas ce post au cas où .......
    Merci et bonne soirée
    Jacques
    0