Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/06/2006, 09h38   #1
Invité de passage
 
Inscription : mai 2006
Messages : 9
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 9
Points : 1
Points : 1
Par défaut [VBA-W] Evénement sur bouton créé dynamiquement

Bonjour à tous,

Bon je vais essayer d'être le plus clair possible mais si vous voulez d'autres infos pour comprendre, n'hésitez pas.

Je suis entrain de faire une interface qui est créée dynamiquement à partir d'un fichier XML. Au départ la macro contient une feuille de base qui contient un multipage et quelques boutons pour évoluer (suivant, quitter...). Ensuite, la macro ouvre un fichier XML contenant les infos permettant de savoir quel controles on veut insérer dans l'interface, à quel endroit... Jusqu'à maintenant j'ai mis des comboBox, textBox, Label... et pas de souci mais maintenant je veux pouvoir insérer des commandButton et qu'il réagisse au click.
Pour l'insertion des boutons, pas de problème et j'arrive à associer à un bouton une procédure réagissant au clic (que j'ai d'ailleurs réussi à faire à partir d'infos trouvées sur les forum!) de cette manière :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private WithEvents monBouton As CommandButton
 
Private Sub monBouton_Click()
...
End Sub
 
'Procédure contenant la création du bouton
Private Sub CreerBlocParcourir(indexPage As Integer, _
                               nomOnglet As String, _
                               labelQuestion As String, _
                               indiceQuestion As String)
...
'Création du bouton
Set monBouton = FormAssistant.MultiPage(indexPage).controls.Add _
                ("Forms.CommandButton.1", _
                 "parcourir" + nomOnglet + indiceQuestion)
...
End Sub
Donc ceci fonctionne très bien mais que pour un seul bouton, si l'on en insère plusieurs, seul le dernier inséré ne réagi au clic.
Donc voilà mon problème, comment faire pour que cela fonctionne en insérant plusieurs boutons ?
Après pas mal de recherches sur les forum et pas mal de tentatives non concluante, je poste ce message en espérant que quelqu'un ai une solution (ou même des idées)

Merci par avance de votre aide

Ptilo
ptilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 16h28   #2
Invité de passage
 
Inscription : mai 2006
Messages : 9
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 9
Points : 1
Points : 1
Re-bonjour,

juste une petite précision au cas ou cela soit utile, je travaille sous word 2000.

Ptilo
ptilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2006, 15h05   #3
Membre régulier
 
Avatar de zebulon2212
 
Inscription : juin 2006
Messages : 77
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : juin 2006
Messages : 77
Points : 80
Points : 80
moi g créer un menu dynamique en vba; si ca marche de la meme facon essaye de remplir la propriété onaction.
ex :
Code :
1
2
3
4
5
6
Set NewButton = NewSubIntervenantMenu.Controls.Add(Type:=msoControlButton)
With NewButton
    .Caption = "Ajouter"
    .FaceId = 1970
    .OnAction = "AjouterIntervenant"
End With
je precise que AjouterIntervenant est une procedure du meme module

Penser aux balises Code (bouton #)
ajoutées par ouskel'n'or
zebulon2212 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2006, 17h53   #4
Rédacteur
 
Homme michel Tanguy
Inscription : août 2005
Messages : 3 317
Détails du profil
Informations personnelles :
Nom : Homme michel Tanguy
Localisation : France, Isère (Rhône Alpes)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : août 2005
Messages : 3 317
Points : 10 706
Points : 10 706
bonjour

tu pourrais par exemple utiliser une collection pour gérer les différents CommandButton créés dynamiquement

http://www.developpez.net/forums/sho...lic+Collect%22

le lien concerne un UserForm dans Excel mais le principe reste le meme


bonne soiree
michel
SilkyRoad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2006, 14h13   #5
Invité de passage
 
Inscription : mai 2006
Messages : 9
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 9
Points : 1
Points : 1
Bonjour,

Merci pour vos réponses, elles m'ont l'air très intéressentes, je crois que ca va bien m'aider. Pour l'instant je suis passer à autre chose (mon appli permet d'insérer qu'un seul bouton pour l'instant) mais j'y revient dessus et je vous tient au courant des résultat dès que j'ai un peu de temps.

Ptilo
ptilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2006, 18h02   #6
Invité de passage
 
Inscription : mai 2006
Messages : 9
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 9
Points : 1
Points : 1
Re bonjour,

je suis entrain de regarder vos propositions,
concernenant le "onAction", cette propriété concerne seulement les controles de types menu donc pas possible pour mes commandButton.

concernant le module de classe, ca me parait pas mal du tout, je n'ai pas encore eu le temps de regarder en détail mais le fait de créer des classes m'intéresse beaucoup (ayant fait de la prog objet) or je ne savait pas qu'on pouvait faire ca en vba (c'est pas le premier truc qu'est indiqué dans les forum et tutos et même dans un gros bouquin de VBA que j'ai acheté et que je n'aurait pas du !!!)

A + quand j'ai plus de détails et merci encore à vous 2

Ptilo
ptilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 00h22   #7
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Si tes boutons sont sur une feuille de calcul, regarde aussi à OLEObjects et Application.caller (qui permet de récupérer le nom du bouton)
Tu as 10 posts qui en traitent sur le forum VBA avec Application.caller comme mot clé. commence par là :
http://www.developpez.net/forums/sho...ication.cal%2A
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 09h03   #8
Invité de passage
 
Inscription : mai 2006
Messages : 9
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 9
Points : 1
Points : 1
Salut,

t'as réponse n'est pas applicable dans mon cas puisque je travaille en VBA Word et mes boutons sont sur une Form.
Merci quand même de l'interêt que tu as porté à ma question.

Je suis entrain de m'intéresser aux indications de "SilkyRoad" avec lesquelles je devrait pouvoir faire quelque chose, je vous tient au courant.

A +

Ptilo
ptilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 10h13   #9
Invité de passage
 
Inscription : mai 2006
Messages : 9
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 9
Points : 1
Points : 1
Bon je suis entrain de tester le code du lien de "SilkyRoad" mais j'ai des erreurs avec la collection, je pense que dans ton cas c'est sous excel donc est ce que ce type de collection fonctionne de la même façon sous word avec des UserForm (0 la place des feuilles excel) ?

Je vais chercher mais je pose la question au cas ou la réponse soit négative, ca m'éviterai de chercher dans cette voie la pour rien !

A +

Ptilo
ptilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/06/2006, 11h08   #10
Invité de passage
 
Inscription : mai 2006
Messages : 9
Détails du profil
Informations forums :
Inscription : mai 2006
Messages : 9
Points : 1
Points : 1
Ca y est ca fonctionne nickel (l'erreur venait du fait que j'avais oublié de faire le "new" concernant la collection).
Merci bien pour votre aide.

A +

Ptilo
ptilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h48.


 
 
 
 
Partenaires

Hébergement Web