Menu en vba

boby87000 Messages postés 132 Statut Membre -  
cousinhub29 Messages postés 1112 Date d'inscription   Statut Membre Dernière intervention   -
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

1 réponse

  1. cousinhub29 Messages postés 1112 Date d'inscription   Statut Membre Dernière intervention   383
     
    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