Menu

Créer une nouvelle barre de menu

Messages postés
30
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
11 juillet 2019
- - Dernière réponse : leaemileemma
Messages postés
30
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
11 juillet 2019
- 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
Afficher la suite 

2 réponses

Messages postés
6135
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
16 juillet 2019
373
0
Merci
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à
Commenter la réponse de cs_Le Pivert
Messages postés
30
Date d'inscription
vendredi 29 mai 2015
Statut
Membre
Dernière intervention
11 juillet 2019
0
Merci
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
Commenter la réponse de leaemileemma