OVH Cloud OVH Cloud

Créer un sous menu en VBA

2 réponses
Avatar
Michir
Bonsoir,

Je souhaiterais créer un sous menu (disons "Commande 1") d'un Menu (disons
"Mon Menu") que j'ai créé il y a longtemps avec l'éditeur de Menu (sous
Excel 95 je crois)
J'ai bien essayé la procédure classique (Outils, Personnaliser, Commande,
Nouveau Menu...) mais cette procédure fonctionne pour des menus existants
par défaut mais pas pour des menus ajoutés à la barre standard. En fait cela
fonctionne pour la session en cours, mais lorsque l'on sort, impossible de
récupérer le menu nouvellement créé.
La seule manière de s'en sortir est d'utiliser une procédure VBA.
Quelqu'un peut-il m'écrire la commande auto-open et auto-close pour créer
mon sous menu "Commande 1" dans "Mon Menu"
Merci à tous,
Michel

2 réponses

Avatar
ChrisV
Bonjour Michir,

Un petit exemple...

Dans un module du classeur
---------------------------------------

Sub ajouM()
Set newM = CommandBars(1).Controls.Add(Type:=msoControlPopup, _
Before:=CommandBars(1).Controls("?").Index, Temporary:=True)
newM.Caption = "&MPFE"
Set cmd1 = CommandBars(1).Controls("MPFE").Controls.Add(msoControlPopup)
With cmd1
.Caption = "&Menu1"
.Controls.Add (msoControlButton)
With .Controls(1)
.Caption = "Sous-menu&1"
.OnAction = "Bonjour"
.FaceId = 342
End With
.Controls.Add (msoControlButton)
With .Controls(2)
.Caption = "Sous-menu&2"
.OnAction = "Salut"
.FaceId = 352
End With
End With
Set cmd2 = CommandBars(1).Controls("MPFE").Controls.Add
With cmd2
.Caption = "Me&nu2"
.OnAction = "aBientot"
End With
Set newM = Nothing
Set cmd1 = Nothing
Set cmd2 = Nothing
End Sub

Sub supM()
On Error Resume Next
Application.CommandBars(1).Controls("MPFE").Delete
End Sub

Sub Bonjour()
MsgBox "Hello !"
End Sub

Sub Salut()
MsgBox "Au revoir !"
End Sub

Sub aBientot()
MsgBox "A bientôt sur MPFE !"
End Sub


Dans la feuille de code de ThisWorkbook
---------------------------------------------------------

Private Sub Workbook_Open()
ajouM
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
supM
End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
On Error Resume Next
Application.CommandBars(1).Controls("MPFE").Visible = True
End Sub

Private Sub Workbook_WindowDeactivate(ByVal Wn As Window)
On Error Resume Next
Application.CommandBars(1).Controls("MPFE").Visible = False
End Sub


ChrisV



"Michir" a écrit dans le message de news:
42ac9514$0$884$
Bonsoir,

Je souhaiterais créer un sous menu (disons "Commande 1") d'un Menu (disons
"Mon Menu") que j'ai créé il y a longtemps avec l'éditeur de Menu (sous
Excel 95 je crois)
J'ai bien essayé la procédure classique (Outils, Personnaliser, Commande,
Nouveau Menu...) mais cette procédure fonctionne pour des menus existants
par défaut mais pas pour des menus ajoutés à la barre standard. En fait
cela fonctionne pour la session en cours, mais lorsque l'on sort,
impossible de récupérer le menu nouvellement créé.
La seule manière de s'en sortir est d'utiliser une procédure VBA.
Quelqu'un peut-il m'écrire la commande auto-open et auto-close pour créer
mon sous menu "Commande 1" dans "Mon Menu"
Merci à tous,
Michel



Avatar
AV
Ayant déjà été confronté au problème, je te conseille, soit d'ouvrir ton fichier
avec XL5 ou 95 et de rajouter ton sous-menu par l'intermédiaire de l'éditeur de
menus, soit, (fortement conseillé), de refaire carrément ton fichier au format
XL 97 ou +

AV