OVH Cloud OVH Cloud

Menus Personnalisés

2 réponses
Avatar
chris.col
bonjour,
je cherche un exemple de code VBA (Excel97) pour ajouter un menu
personnalisé qui
déroulera 2 lignes de sous-menus qui lanceront chacun une macro differente.
Ce menu spécialisé ne doit être attaché qu'à un seul fichier Excel.
(il ne doit pas apparaitre à l'ouverture d'un nouveau classeur par exemple).
En fait le problème c'est seulement les sous-menus
pour le menu Titre le code:

Set MonMenu = Application.CommandBars("Worksheet Menu
Bar").Controls.Add(Type:= _
msoControlPopup, Before:=11, temporary:=True)
MonMenu.Caption = "Le Nouveau Menu"

dans Workbook_open() marche bien. Comment ajouter "sous-menu1" et
"sous-menu2"
a ce menu "Le Nouveau Menu".

merci d'avance

2 réponses

Avatar
Starwing
Essaie ceci:

Un exemple comme trant d'autres

Set menu1 = newmenu.CommandBar.Controls _
.Add(Type:=msoControlButton, ID:=1)
menu0.Caption = "Sous-menu1"
menu0.OnAction = "Macro1"
menu0.FaceId = 25
Set menu2 = newmenu.CommandBar.Controls _
.Add(Type:=msoControlButton, ID:=1)
menu1.Caption = "Sous-menu2"
menu1.OnAction = "macro2"
menu1.FaceId = 577

Starwing
-----Message d'origine-----
bonjour,
je cherche un exemple de code VBA (Excel97) pour ajouter
un menu

personnalisé qui
déroulera 2 lignes de sous-menus qui lanceront chacun une
macro differente.

Ce menu spécialisé ne doit être attaché qu'à un seul
fichier Excel.

(il ne doit pas apparaitre à l'ouverture d'un nouveau
classeur par exemple).

En fait le problème c'est seulement les sous-menus
pour le menu Titre le code:

Set MonMenu = Application.CommandBars("Worksheet Menu
Bar").Controls.Add(Type:= _
msoControlPopup, Before:, temporary:=True)
MonMenu.Caption = "Le Nouveau Menu"

dans Workbook_open() marche bien. Comment ajouter "sous-
menu1" et

"sous-menu2"
a ce menu "Le Nouveau Menu".

merci d'avance


.



Avatar
papou
Bonjour Chris
Autre exemple (adapté à tes noms de menu) avec deux procédures :
CreerMonMenu que tu lances soit dans l'évènement WorkBook_Open, soit dans
l'évènement WorkBook_Activate
VirerMonMenu que tu lances dans l'évènement WorkBook_BeforeClose ou
WorkBook_Deactivate
Le choix de l'évènement est fonction de l'intérêt de la présence de ton menu
si un autre classeur est ouvert.
Cordialement
Pascal

Sub CreerMonMenu()
Set MonMenu = Application.CommandBars("Worksheet Menu
Bar").Controls.Add(Type:= _
msoControlPopup, Before:, temporary:=True)
MonMenu.Caption = "Le Nouveau Menu"
Set SousMenu1 = MonMenu.Controls.Add(msoControbutton, 1, , , True)
With SousMenu1
.Caption = "Sous-Menu1"
.OnAction = "Macro Sous-Menu1"
End With
Set SousMenu2 = MonMenu.Controls.Add(msoControlButton, 1, , , True)
With SousMenu2
.Caption = "Sous-Menu2"
.OnAction = "Macro Sous-Menu2"
End With
End Sub
Sub VirerMonMenu()
For Each ctr In Application.CommandBars(1).Controls
If Not ctr.BuiltIn And ctr.Caption = "Le Nouveau Menu" Then
ctr.Delete
End If
Next
End Sub

"chris.col" a écrit dans le message de
news:3fa7b8c6$0$13286$
bonjour,
je cherche un exemple de code VBA (Excel97) pour ajouter un menu
personnalisé qui
déroulera 2 lignes de sous-menus qui lanceront chacun une macro
differente.

Ce menu spécialisé ne doit être attaché qu'à un seul fichier Excel.
(il ne doit pas apparaitre à l'ouverture d'un nouveau classeur par
exemple).

En fait le problème c'est seulement les sous-menus
pour le menu Titre le code:

Set MonMenu = Application.CommandBars("Worksheet Menu
Bar").Controls.Add(Type:= _
msoControlPopup, Before:, temporary:=True)
MonMenu.Caption = "Le Nouveau Menu"

dans Workbook_open() marche bien. Comment ajouter "sous-menu1" et
"sous-menu2"
a ce menu "Le Nouveau Menu".

merci d'avance