créer un menu contextuel à 3 niveaux sous VBA Excel
Bonjour
je n'arrive pas à creer une sous-menu contextuel à trois niveaux sous VBA excel
de la forme :
AA
BB
CC
DD
-> DD1
-> DD2
EE
->EE1
->EE2
->EE3->> EE3.1
->>EE3.2
->> EE3.3
FF
->FF1
->FF2 ->> FF2.1
->> FF2.2
->> FF2.3
GG
si quelqu'un a une idée, grand merci.
créer un menu contextuel à 3 niveaux sous VBA Excel
Citation:
Envoyé par
deedolith
Salut,
Qu'as tu déja fait ?
bonjour j'ai fait un code :
Sub CreerMenuContextuel()
Dim cbrMenu As CommandBarPopup
Dim cbrSousMenu As CommandBarPopup
Dim cbrSousSousMenu As CommandBarPopup
Dim cbrBouton As CommandBarButton
' Supprimer le menu contextuel s'il existe déjà
On Error Resume Next
Application.CommandBars("Cell").Controls("MenuPrincipal").Delete
On Error GoTo 0
' Créer le menu principal
Set cbrMenu = Application.CommandBars("Cell").Controls.Add(Type:=msoControlPopup, Before:=1)
With cbrMenu
.Caption = "Menu Principal"
' Créer le premier sous-menu
Set cbrSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousMenu
.Caption = "AA"
End With
Set cbrSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousMenu
.Caption = "BB"
End With
Set cbrSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousMenu
.Caption = "CC"
End With
Set cbrSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousMenu
.Caption = "DD"
' Créer les sous-sous-menus pour DD
Set cbrSousSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousSousMenu
.Caption = "DD1"
End With
Set cbrSousSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousSousMenu
.Caption = "DD2"
End With
End With
Set cbrSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousMenu
.Caption = "EE"
' Créer les sous-sous-menus pour EE
Set cbrSousSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousSousMenu
.Caption = "EE1"
End With
Set cbrSousSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousSousMenu
.Caption = "EE2"
End With
Set cbrSousSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousSousMenu
.Caption = "EE3"
' Créer les sous-sous-sous-menus pour EE3
Set cbrSousSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousSousMenu
.Caption = "EE3.1"
End With
Set cbrSousSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousSousMenu
.Caption = "EE3.2"
End With
Set cbrSousSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousSousMenu
.Caption = "EE3.3"
End With
End With
End With
Set cbrSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousMenu
.Caption = "FF"
' Créer les sous-sous-menus pour FF
Set cbrSousSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousSousMenu
.Caption = "FF1"
End With
Set cbrSousSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousSousMenu
.Caption = "FF2"
' Créer les sous-sous-sous-menus pour FF2
Set cbrSousSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousSousMenu
.Caption = "FF2.1"
End With
Set cbrSousSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousSousMenu
.Caption = "FF2.2"
End With
Set cbrSousSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousSousMenu
.Caption = "FF2.3"
End With
End With
End With
Set cbrSousMenu = .Controls.Add(Type:=msoControlPopup)
With cbrSousMenu
.Caption = "GG"
End With
End With
End Sub
Sub ReInit()
Application.CommandBars("Cell").Reset
End Sub
Sub lire()
Application.CommandBars.ActionControl.Caption
End Sub
pas tres beau.
merci pour l'amalioration.
créer un menu contextuel à 3 niveaux sous VBA Excel
Citation:
Envoyé par
deedolith
Si tu veux passer par un fichier texte,
il te faut d'abord réflechir à quelles informations tu as besoin pour:
1) Créer un item.
2) Retrouver l'item parent (car c'est à partir du parent que l'on créé les enfants).
Coté VBA, il te faudra une fonction permettant de retrouver un item particulier.
Mais commençons pas le fichier texte.
Quelle structure envisages-tu ?
Que comptes-tu y inclure ?
Je te suggère de bien regarder les propriétés d'un item (CommandBarControl) afin d'écrire ton fichier en conséquence.
Tips: Il est préférable que chaque ligne contienne suffisement d'informations pour retrouver / ajouter un item, ainsi chaque ligne est indépendante, c'est plus facile à traiter.
la structure du fichier est simple :
Risque 1
Risque 2
Risque 2.1
Risque 2.2
Risque 2.3
Risque 3
Risque 4
Risque 4.1
Risque 4.2
Risque 4.2.1
Risque 4.2.2
Risque 4.2.3
Risque 5
Risque 6
merci pour votre aide.