VBA Suppression menu Excel puis création menu personnalisé

Signaler
Messages postés
1
Date d'inscription
mardi 5 décembre 2000
Statut
Membre
Dernière intervention
10 mars 2008
-
Messages postés
36
Date d'inscription
mercredi 8 octobre 2008
Statut
Membre
Dernière intervention
12 avril 2017
-
Bonjour,

Petit problème... J'ai créé un code pour supprimer les barres et menus d'Excel, ainsi qu'un code pour créer un nouveau menu, mais lorsque je lance le 2ème après avoir exécuté le 1er, il ne s'exécute pas... Pourriez-vous m'indiquer ce que je dois changer dans mon code pour afficher mon menu personnalisé après avoir supprimé celui d'Excel (qui s'effectue automatiquement lors de l'ouverture)?

Dans ThisWorkbook:
Private Sub Workbook_Open()
   Dim CmdB As CommandBar
   For Each CmdB In Application.CommandBars
        CmdB.Enabled = False
   Next CmdB  
End Sub

Dans Module1:
Sub Creer_Menu()
   Dim Barre As Object
   Set Barre = Application.CommandBars("Worksheet Menu Bar").Controls.Add _
   (msoControlPopup, , , , False)
    Barre.Caption = "FMIT"
    With Barre.Controls.Add(msoControlButton)
      .Caption = "Black and Scholes"
      .OnAction = "CalculPrixOption"
    End With
End Sub
'Exécution de l'action ouvrir formulaire lors du click sur le sous-menu:
Sub CalculPrixOption()
    ParametresOption.Show
End Sub

Merci d'avance pour votre aide !!!

@ +

Gwen

1 réponse

Messages postés
36
Date d'inscription
mercredi 8 octobre 2008
Statut
Membre
Dernière intervention
12 avril 2017

Bonjour... Il y a juste une confusion dans ton code: au lieu de créer une nouvelle barre et de la mettre à la place de la barre de menus, tu ajoues un controle à la barre existante. Comme tu l'as masquée, rien ne se passe.

Donc voici une suggestion....

Sub Creer_Menu()
   ' barre est la barre de commandes à créer
   ' menu est le premier menu 
   Dim Barre As Object
   Dim menu As CommandBarControl
  
   ' normalement tu peux donner une nom à l a barre, mais chez oi ça prend beaucoupe de temps, pour rien...
   Set Barre = Application.CommandBars.Add(Position:=msoBarTop, MenuBar:=True, temporary:=True)
   
   ' rajout d'un premier controle: le menu lui-même
   Set menu = Barre.Controls.Add(msoControlPopup)
   menu.Caption = "FMIT"
   ' puis le premier item du menu...
    With menu.Controls.Add(msoControlButton)
      .Caption = "Black and Scholes"
      .OnAction = "CalculPrixOption"
    End With
    Barre.Enabled = True
    Barre.Visible = True
...

J'ai essayé, c'est OK  chez moi...

InfOrom