Créer une nouvelle barre de menu

Fermé
leaemileemma Messages postés 38 Date d'inscription vendredi 29 mai 2015 Statut Membre Dernière intervention 6 août 2024 - 6 juil. 2019 à 22:15
leaemileemma Messages postés 38 Date d'inscription vendredi 29 mai 2015 Statut Membre Dernière intervention 6 août 2024 - 9 juil. 2019 à 19:56
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
A voir également:

2 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
7 juil. 2019 à 09:43
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
leaemileemma Messages postés 38 Date d'inscription vendredi 29 mai 2015 Statut Membre Dernière intervention 6 août 2024
9 juil. 2019 à 19:56
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