begin process at 2012 02 13 03:23:51
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VBA

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

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


 Information sur la source

Note :
10 / 10 - par 6 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VBA Niveau :Débutant Date de création :12/11/2004 Date de mise à jour :12/11/2004 16:54:44 Vu :22 777

Auteur : sybacs

Ecrire un message privé
Commentaire sur cette source (10)
Ajouter un commentaire et/ou une note

 Description

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

  • '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
'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.


 Historique

12 novembre 2004 16:54:47 :
Juste un petit ajout de commentaire.

 Sources du même auteur

Source avec Zip Source avec une capture FORMULAIRE DE SÉLECTION DE TYPE ASSISTANT
Source avec Zip Source avec une capture MACRO COMPLÉMENTAIRE DE DÉDOUBLONNAGE POUR EXCEL

 Sources de la même categorie

Source avec Zip GESTION PERSONNEL par oudlarbi
Source avec Zip Source avec une capture CALENDRIER EN VBA POUR EXCEL 2010 par nounou94
Source avec Zip Source avec une capture MANIPULER LES FENETRES ENFANT D'EXCEL par bigfish_le vrai
Source avec Zip Source avec une capture COLLECTION ID par Le Pivert
Source avec Zip Source avec une capture VBA MASQUE DE SAISIE NUMÉRIQUE par acive

Commentaires et avis

Commentaire de Afyn le 12/11/2004 20:10:31

Oui super ...
On peut également faire des menus contextuel ? (Clic droit)

A+

Afyn
Navedac

Commentaire de arakis21 le 16/11/2004 12:19:31

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.

Commentaire de onemonster le 14/10/2005 08:28:58

super!

Commentaire de us_30 le 30/11/2005 19:04:56

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.

Commentaire de kalobit le 26/01/2006 17:21:06

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 ?

Commentaire de typhoun le 31/08/2006 08:51:59

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

Commentaire de jsfouss le 11/09/2006 12:06:39

ça marche! mais je veux savoir comment ajouter des sous menu.

Commentaire de erreurs404 le 16/01/2007 22:23:54

Très bonne source simple et concise, j'ai juste adapté pour avoir des sous-menus et des séparateurs ...

Nickel, merci !

Commentaire de axc74 le 24/12/2008 14:15:41 10/10

Enfin je trouve dans ton code ce que je cherche depuis des heures ! C'est simple, et surtout ça fonctionne !
Bravo

Commentaire de patosch le 13/12/2010 18:39:32

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

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,390 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales