Ajout d'un menu excel en vba (avec n items) en une ligne de code

Contenu du snippet

Petites procédures VBA permettant d'ajouter très simplement un menu avec n items à excel (à l'ouverture dans l'exemple), et de le supprimer (à la fermeture dans l'exemple).

Source / Exemple :


'Procédure appelante ajout d'un menu avec n items
'----------------------------------------------------------------
Private Sub Workbook_Open()
' remplacer NomDuMenu, NomItemX, ProcedureX (le nombre d'items et de procédures doit être identique
AjMenuX "NomDuMenu", Array("NomItem1", "NomItem2", "NomItem3"), Array("Procedure1", "Procedure2", "Procedure3")
End Sub

'Procédure appelante suppression d'un menu
'--------------------------------------------------------
Private Sub Workbook_BeforeClose(Cancel As Boolean)
SuprMenuX ("NomDuMenu")
End Sub

'================
'Procédures appelées
'================

' Procédure d'ajout d'un menu
'-------------------------------------

Sub AjMenuX(NomMenu, TbItem, TbLien)
Set myMenuBar = CommandBars.ActiveMenuBar
Set newMenu = myMenuBar.Controls.Add(Type:=msoControlPopup, Temporary:=True)
newMenu.Caption = NomMenu
For Each Value In TbItem
Set ctrl1 = newMenu.Controls.Add(Type:=msoControlButton, Id:=I + 1)
ctrl1.Caption = Value
ctrl1.TooltipText = Value
ctrl1.Style = msoButtonCaption
ctrl1.OnAction = TbLien(I)
I = I + 1
Next Value
End Sub

'Procédure de supperssion d'un menu
'-----------------------------------------------

Sub SuprMenuX(NomMenu As String)
On Error Resume Next
Set myMenuBar = CommandBars.ActiveMenuBar
myMenuBar.Controls(NomMenu).Delete
End Sub

Conclusion :


Testé uniquement avec excel 97
Vous pouvez mettre autant d'itmes que vous voulez dans le menu, à condition que les 2 tableaux array() aient le même nombre de paramètres.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.