Savoir quel bouton de Menu a ete clique

  • Initiateur de la discussion Initiateur de la discussion okparanoid
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

O

okparanoid

Guest
Bonjour a tous,

Je cree un Menu avec un item pour chaque fichier excel present dans un repertoire.

Je veux pouvoir ouvrir ses fichiers si l'on clique sur l'item correspondant.

Je voudrais qu'ils aient tous la meme methode appelee avec OnAction. Le probleme est de savoir comment les differencier. Y'a t il un moyen de savoir quel item vient d'etre selectionne ???

Merci
 
Ouep ca ok sauf que je ne sais pas a l'avance combien je vais avoir d'item et que donc je voudrais utiliser qu'une seule procedure onAction, en utilisant un parametre. On peut mettre un tag (integer) ou un parameter (string) dans chaque item. Reste a savoir quel item a appele effectivement la procedure en question...
 
On l'oublie souvent, mais il est possible de passer un paramètre à une macro définie dans la propriété OnAction d'un bouton. Il suffit d'indiquer ce paramètre entre parenthèses, comme ceci :

With MyControl
'...
.OnAction = 'Mysub(33)'
End With

Evidemment, MySub doit prévoir elle-même ce paramètre !

Sub MySub(Parm$)
Msgbox Parm
End Sub


Si on veut utiliser plusieurs paramètres, il ne faut pas séparer ceux-ci par des virgules, mais par des points-virgules
.OnAction = 'Mysub(33;22)'
 
Hello

J'avais essayer au pif en esperant que ca marche et j'avais pas reussi...

Ton parametre c'est un string ou integer ?

Est-ce qu'avec XL 97 tu peux me confirmer que la methode marche bien ?

Merci a toi !
 
Ah Excel 97 : jamais touché à cette antiquité, donc je ne peux pas te dire, mais on ne sait jamais. Telle que ma fonction est écrite, elle attend un string, mais tu peux lui faire accepter un Integer si tu veux, en écrivant :

Sub MySub(Byval Parm As Integer)
...
End Sub
 
Alors en faite j'ai ecrit ca :

(voir la piece jointe, on est limite en longueur du post ?)

Si j'appelle les fonctions creees en rajoutant du code macro a la volee ca marche mais ca me plait moyennement. Je prefere utiliser l'appel de la fonction avec parametre ca me semble plus propre.

Sauf que la la fonction est bien appelee, elle n'execute pas le .open mais le msgbox si !!!!
ET chose encore plus etrange elle est executee deux fois.

Si quelqu'un a une idee parce que la...

Message édité par: okparanoid, à: 23/05/2006 21:12 [file name=Malette.zip size=9147]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Malette.zip[/file]

Message édité par: okparanoid, à: 23/05/2006 21:18
 

Pièces jointes

Code:
Sub CreeSousMenu(Menu As CommandBarPopup, ByVal NomFichier As String)
Dim MenuItem As CommandBarControl

Set MenuItem = Menu.Controls.Add(Type:=msoControlButton)

MenuItem.Caption = NomFichier

With ThisWorkbook.VBProject.vbcomponents('ModMacrosOuvrir').CodeModule
        .InsertLines 1, 'Sub OpenFile' & MenuItem.Index
        .InsertLines 2, 'workbooks.open ''' + ThisWorkbook.Path + '\\' + NomFichier + ''''
        .InsertLines 3, 'End Sub'
        .InsertLines 4, ''
End With

MenuItem.OnAction = 'OpenFichier(''' + ThisWorkbook.Path + '\\' + NomFichier + ''')'
End Sub

Code:
Sub OpenFichier(ByVal nom As String)
Workbooks.Open nom, ReadOnly:=True
MsgBox nom
End Sub

Message édité par: okparanoid, à: 23/05/2006 21:21

Message édité par: okparanoid, à: 23/05/2006 21:22
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour