Menu en vba

Fermé
boby87000 Messages postés 113 Date d'inscription lundi 19 janvier 2009 Statut Membre Dernière intervention 10 juin 2011 - 23 oct. 2010 à 19:10
cousinhub29 Messages postés 887 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 mai 2024 - 24 oct. 2010 à 01:42
Bonjour,


Bonjour,

j'ai crée une menu sur ma feuille excel avec un code VBA et je voudrais créer d'autres en les espaçants de la sorte :

Mon menu
--Quiter
--Annuler
--------------
--Ouvrir
--Aditionner
--Soustraire

Voila mon code çi dessus. Pouvez vous m'aider?

Private Sub Workbook_Open()

addCQTMToolbar
'addCQTMToolbar1
End Sub

Private Sub addCQTMToolbar()

Const menuName = "Mon menu "

Dim menuItems(1, 1) As String
Dim value As Variant
Dim i As Integer

Dim myMenuBar As CommandBar
Dim newMenu As CommandBarControl
Dim ctrl1 As CommandBarControl


menuItems(0, 0) = "Quiter.."
menuItems(1, 0) = "Annuler"


On Error Resume Next
Set myMenuBar = Application.CommandBars.ActiveMenuBar
myMenuBar.Controls(menuName).Delete
Set newMenu = myMenuBar.Controls.Add(msoControlPopup, , , 10, True)
newMenu.Caption = menuName

For i = 0 To UBound(menuItems, 1)
Set ctrl1 = newMenu.Controls.Add(msoControlButton, i + 1)
ctrl1.Caption = menuItems(i, 0)
ctrl1.TooltipText = menuItems(i, 0)
ctrl1.Style = msoButtonCaption
ctrl1.OnAction = menuItems(i, 1)
Next

Err.Clear

End Sub

Merci pour votre aide
A voir également:

1 réponse

cousinhub29 Messages postés 887 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 9 mai 2024 339
24 oct. 2010 à 01:42
Bonjour,

Modifie ainsi ton code :

Private Sub addCQTMToolbar()
Const menuName = "Mon menu "
Dim menuItems(4, 1) As String
Dim value As Variant
Dim i As Integer
Dim myMenuBar As CommandBar
Dim newMenu As CommandBarControl
Dim ctrl1 As CommandBarControl
menuItems(0, 0) = "Quitter..": menuItems(0, 1) = "Proc_Quitter"
menuItems(1, 0) = "Annuler": menuItems(1, 1) = "Proc_Annuler"
menuItems(2, 0) = "Ouvrir": menuItems(2, 1) = "Proc_Ouvrir"
menuItems(3, 0) = "Additionner": menuItems(3, 1) = "Proc_Additionner"
menuItems(4, 0) = "Soustraire": menuItems(4, 1) = "Proc_Soustraire"
On Error Resume Next
Set myMenuBar = Application.CommandBars.ActiveMenuBar
myMenuBar.Controls(menuName).Delete
On Error GoTo 0
Set newMenu = myMenuBar.Controls.Add(msoControlPopup, , , 10, True)
newMenu.Caption = menuName
For i = LBound(menuItems) To UBound(menuItems)
    Set ctrl1 = newMenu.Controls.Add(msoControlButton)
    ctrl1.Caption = menuItems(i, 0)
    ctrl1.TooltipText = menuItems(i, 0)
    ctrl1.Style = msoButtonCaption
    ctrl1.OnAction = menuItems(i, 1)
    If i = 2 Then ctrl1.BeginGroup = True
Next
End Sub


Et dans un module standard, tu mets ces procédures :

Sub Proc_Quitter()
MsgBox "Je quitte"
End Sub
Sub Proc_Annuler()
MsgBox "J'annule"
End Sub
Sub Proc_Ouvrir()
MsgBox "J'ouvre"
End Sub
Sub Proc_Additionner()
MsgBox "J'additionne"
End Sub
Sub Proc_Soustraire()
MsgBox "Je soustraits"
End Sub


Les MsgBox étant bien évidemment remplacés par tes codes...

Bonne nuit
0