AJOUT D'UN MENU EXCEL EN VBA (AVEC N ITEMS) EN UNE LIGNE DE CODE
Afyn
Messages postés608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016
-
12 nov. 2004 à 20:10
cs_patosch
Messages postés42Date d'inscriptionjeudi 20 septembre 2007StatutMembreDernière intervention26 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.
cs_patosch
Messages postés42Date d'inscriptionjeudi 20 septembre 2007StatutMembreDernière intervention26 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és1Date d'inscriptionlundi 25 mars 2013StatutMembreDernière intervention13 mai 2013 13 mai 2013 à 20:52
Super et compréhensible pour un débutant. Merci
cs_patosch
Messages postés42Date d'inscriptionjeudi 20 septembre 2007StatutMembreDernière intervention26 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és2Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention24 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és117Date d'inscriptionlundi 23 octobre 2000StatutMembreDernière intervention12 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és14Date d'inscriptiondimanche 2 juillet 2006StatutMembreDernière intervention17 février 2011 11 sept. 2006 à 12:06
ça marche! mais je veux savoir comment ajouter des sous menu.
typhoun
Messages postés21Date d'inscriptionjeudi 1 juillet 2004StatutMembreDernière intervention31 août 2006 31 août 2006 à 08:51
Voila un site qui donne des astuces et du code VBA pour Excel.
kalobit
Messages postés169Date d'inscriptionmardi 15 juillet 2003StatutMembreDernière intervention 7 avril 20082 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és2065Date d'inscriptionlundi 11 avril 2005StatutMembreDernière intervention14 mars 201610 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és18Date d'inscriptionvendredi 25 mars 2005StatutMembreDernière intervention 6 juillet 2006 14 oct. 2005 à 08:28
super!
arakis21
Messages postés1Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention16 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és608Date d'inscriptionsamedi 3 août 2002StatutMembreDernière intervention22 décembre 2016 12 nov. 2004 à 20:10
Oui super ...
On peut également faire des menus contextuel ? (Clic droit)
14 mai 2013 à 12:51
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
13 mai 2013 à 20:52
13 déc. 2010 à 18:39
c'est ".faceID=X" X etant le numero de l'icons il y en a plus de 10000 je crois
24 déc. 2008 à 14:15
Bravo
16 janv. 2007 à 22:23
Nickel, merci !
11 sept. 2006 à 12:06
31 août 2006 à 08:51
Acceuil:
http://ericrenaud.free.fr/index.html
Menu et barre d'outils:
http://ericrenaud.free.fr/menubarre.htm
26 janv. 2006 à 17:21
Et pour la suite, créer une barre d'outil paramétrable depuis une feuille Excel ?
30 nov. 2005 à 19:04
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.
14 oct. 2005 à 08:28
16 nov. 2004 à 12:19
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.
12 nov. 2004 à 20:10
On peut également faire des menus contextuel ? (Clic droit)
A+
Afyn
Navedac