AJOUT D'UN MENU EXCEL EN VBA (AVEC N ITEMS) EN UNE LIGNE DE CODE

Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016 - 12 nov. 2004 à 20:10
cs_patosch Messages postés 42 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 26 juin 2013 - 14 mai 2013 à 12:51
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/27522-ajout-d-un-menu-excel-en-vba-avec-n-items-en-une-ligne-de-code

cs_patosch Messages postés 42 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 26 juin 2013
14 mai 2013 à 12:51
Bonjour a tous

pour les icons il suffit d'ajouter un array contenant les numero d'ID
un peu comme ceci:
'Procédure appelante ajout d'un menu avec n items
'----------------------------------------------------------------
Private Sub Workbook_Open()
Dim nomitems, proc, icons
SuprMenuX ("NomDuMenu")
nomitems = Array("NomItem1", "NomItem2", "NomItem3")
proc = Array("Procedure1", "Procedure2", "Procedure3")
icons = Array(256, 136, 1066)

' remplacer NomDuMenu, NomItemX, ProcedureX (le nombre d'items et de procédures doit être identique
AjMenuX "NomDuMenu", nomitems, proc, icons
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, icon) 'sub plus les 3 arguments (array)
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) 'on ajoute un bouton
ctrl1.Caption = Value 'le titre du bouton
ctrl1.TooltipText = Value 'l'infobule du bouton
ctrl1.Style = 3 'le style de bouton(3 en l'ocurence caption,texte,icon)
ctrl1.FaceId = icon(i) 'on attribu l'icon avec l'array icon
ctrl1.OnAction = TbLien(i) 'lien vers la macro qui lui est attribuée
i = i + 1 'decompte pour le array
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
Scarbiet94 Messages postés 1 Date d'inscription lundi 25 mars 2013 Statut Membre Dernière intervention 13 mai 2013
13 mai 2013 à 20:52
Super et compréhensible pour un débutant. Merci
cs_patosch Messages postés 42 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 26 juin 2013
13 déc. 2010 à 18:39
pour les icons d'office avec la constructions du bouton
c'est ".faceID=X" X etant le numero de l'icons il y en a plus de 10000 je crois
axc74 Messages postés 2 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 24 décembre 2008
24 déc. 2008 à 14:15
Enfin je trouve dans ton code ce que je cherche depuis des heures ! C'est simple, et surtout ça fonctionne !
Bravo
erreurs404 Messages postés 117 Date d'inscription lundi 23 octobre 2000 Statut Membre Dernière intervention 12 août 2009
16 janv. 2007 à 22:23
Très bonne source simple et concise, j'ai juste adapté pour avoir des sous-menus et des séparateurs ...

Nickel, merci !
jsfouss Messages postés 14 Date d'inscription dimanche 2 juillet 2006 Statut Membre Dernière intervention 17 février 2011
11 sept. 2006 à 12:06
ça marche! mais je veux savoir comment ajouter des sous menu.
typhoun Messages postés 21 Date d'inscription jeudi 1 juillet 2004 Statut Membre Dernière intervention 31 août 2006
31 août 2006 à 08:51
Voila un site qui donne des astuces et du code VBA pour Excel.

Acceuil:
http://ericrenaud.free.fr/index.html

Menu et barre d'outils:
http://ericrenaud.free.fr/menubarre.htm
kalobit Messages postés 169 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 7 avril 2008 2
26 janv. 2006 à 17:21
Pas mal du tout, simple, concis et efficace. Je mets un 10 pour ta source.

Et pour la suite, créer une barre d'outil paramétrable depuis une feuille Excel ?
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
30 nov. 2005 à 19:04
Excellent ! 10/10 !

Je pense que j'utiliserai ton code dans mes projets. IL simplifie vraiment la vie... De plus, il consistue une excellente base pour l'étoffer. Merci.

Amicalement,
Us.
onemonster Messages postés 18 Date d'inscription vendredi 25 mars 2005 Statut Membre Dernière intervention 6 juillet 2006
14 oct. 2005 à 08:28
super!
arakis21 Messages postés 1 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 16 novembre 2004
16 nov. 2004 à 12:19
Super, et je confirme, ça fonctionne au moins avec les versions d'office 8 à 11.
Mais as-tu un solution pour mettre l'icone de ton choix sur un bouton ?
Ou comment faire entrer une icone dans la collection office disponible.
Afyn Messages postés 608 Date d'inscription samedi 3 août 2002 Statut Membre Dernière intervention 22 décembre 2016
12 nov. 2004 à 20:10
Oui super ...
On peut également faire des menus contextuel ? (Clic droit)

A+

Afyn
Navedac
Rejoignez-nous