menu vba

  • Initiateur de la discussion jack desbois
  • Date de début
J

jack desbois

Guest
bonjour, j'ai un probleme avec les menu, je personnalise ma barre de menu excel en ajoutant un nouveau menu puis à l'interieur de ce nouveau menu je mets des menus prédéfinis auxquelles j'affecte des macros qui vont me permettre d'inscrire un nom dans la cellule selectionner lorsque je clique sur cet élément du menu.
Mon probleme est que ce menu que j'ai crée ne s'ouvre pas lorsque j'ouvre excel, je suis obligé de recréer le menu et de réaffecter les différentes macros. comment faire pour que le menu s'ouvre des que j'ouvre excel. Merci pour votre aide.
 

galopin01

XLDnaute Occasionnel
Voilà :
Tout compte fait, pas besoin d'Array !
J'ai un peu restructuré mais tu comprendras surement !
A+
[file name=MenudeGalopin.zip size=13810]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/MenudeGalopin.zip[/file]
 

Pièces jointes

  • MenudeGalopin.zip
    13.5 KB · Affichages: 19
J

jack desbois

Guest
merci Galopin01, pour eune telle rapidité.


Je me permet de coller ici une partide ton code pour te demander quelques explications complémentaires...

DefBool Y
DefByte A-C
DefInt I-K, X
DefLng L
DefCur E-F, P
DefSng N
DefDbl D
DefDate H, Q
DefStr M, R-T, Z
DefObj O
DefVar V

--> Je ne Comprend pas bien a quoi cervent toutes ces variables.


Sub A_Test()
MsgBox NbIt
End Sub

Sub MyMenu()
Dim oMBar, oNMenu, oSM, oSM1, oSM2, oSM3, oSM4, oSM5, oSM6, oSM7, zC, zA, i
DelMenu
Set oMBar = CommandBars.Item('Worksheet Menu Bar')
Set oNMenu = oMBar.Controls.Add(Type:=msoControlPopup)
oNMenu.Caption = 'Mes macros'
For i = 1 To NbIt
zC = Cells(i, 1).Value
zA = Cells(i, 2).Value
oNMenu.Controls.Add(Type:=msoBarTypeMenuBar).Caption = zC
oNMenu.Controls(i).OnAction = zA
Next
End Sub

Je peux mettre autant d'éléments oSMxx que je le veux, c'est bien ca?
Comment est calculé la variable NbIt??
je ne comprend pas ce passage :
zC = Cells(i, 1).Value
zA = Cells(i, 2).Value

Voila, apres le reste je crois que je comprend à peut pres....


Merci d'avance
 

galopin01

XLDnaute Occasionnel
Les DefType ne sont pas des Variables elles servent à dimensionner tes variables: c'est pourquoi tu ne trouveras jamais (ou presque) de As Integer, As String dans mes Dim...
C'est une vieille habitude de prog, quand je fais des trucs un peu sérieux.
C'est _Thierry qui va être content ! lol !
Toute variable crée par Dim ultérieurement et dont le nom commence par o est du type objet
Toute variable crée par Dim ultérieurement et dont le nom commence par i, j ou k est du type integer
et ainsi de suite pour tout le module
Au bout du compte compte tenu du très petit nombre de variables, tu peux virer tous les Def* et reprende ton système de déclaration habituel.

les oSM en fait elles servent à rien ! en fait je les ai oubliées en faisant le ménage, mais tu peux les supprimer aussi.

zC = Cells(i, 1).Value
zA = Cells(i, 2).Value

En fait il vaudrait mieux écrire
zC = Worksheets(1).Cells(i, 1).Value
zA = Worksheets(1).Cells(i, 2).Value

en effet comme il n'y à plus d'oSM, c'est la feuille1 qui pilote les items du menu et le nom de la macro... voir le commentaire plus bas sur le nom des macros à appeler...

Function NbIt est une fonction personnalisée que tu trouveras tout en bas ou en faisant un clic droit dessus : Définition
En fait c'est à peu près la seule chose que tu auras à modifier si tu modifies le nombre d'items

Dans cette Fonction, il faut que Range('A10') soit supérieure au nombre d'item:
Tu peux mettre
NbIt = Worksheets(1).Range('A100').End(xlUp).Row
tout de suite , comme ça tu seras tranquille...

Nota :
Dans la première démo, si tu testes les items du menu il se produit une erreur car je n'ai pas renommé tous les :
Sub asso1_menu
il suffit de les renommer en
Sub MenAsso1...MenAsso2...
et c'est bon.
...Enfin dans ton cas c'est surtout le principe qui compte!

Vala, je crois que j'ai rien oublié ?

Pour clore le sujet, le fichier corrigé: [file name=MenudeGalopin_20050312190001.zip size=10756]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/MenudeGalopin_20050312190001.zip[/file]

Message édité par: galopin01, à: 13/03/2005 08:25
 

Pièces jointes

  • MenudeGalopin_20050312190001.zip
    10.5 KB · Affichages: 14

Discussions similaires

Réponses
12
Affichages
407
Réponses
1
Affichages
349

Statistiques des forums

Discussions
312 509
Messages
2 089 145
Membres
104 050
dernier inscrit
Pepito93100