VBA Suppression menu Excel puis création menu personnalisé

Gwenandance Messages postés 1 Date d'inscription mardi 5 décembre 2000 Statut Membre Dernière intervention 10 mars 2008 - 10 mars 2008 à 17:42
cs_inforom Messages postés 36 Date d'inscription mercredi 8 octobre 2008 Statut Membre Dernière intervention 12 avril 2017 - 1 mars 2009 à 13:32
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

cs_inforom Messages postés 36 Date d'inscription mercredi 8 octobre 2008 Statut Membre Dernière intervention 12 avril 2017
1 mars 2009 à 13:32
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
0
Rejoignez-nous