Passer paramètre code click bouton

C

Clark

Guest
Bonjour à vous,

j'aimerais savoir s'il est possible de passer un paramètre à la fonction click d'un bouton situé dans une sheet.

Voilà le code que je passe :

Application.Run "" & Sheets("Activite").CodeName & ".bt_activite_Click" , Code.Value

et le code de l'évènement click

Private Sub bt_activite_Click(code as string)

mais apparemment ca ne lui plait pas! Est-ce que j'ai fait une erreur ou bien, est-ce que tout simplement ce n'est pas possible?

Merci
Clark:)
 
M

michel

Guest
bonsoir Clark


si un CommandButton , est inséré dans une feuille appelée "Activite" et qu'une procedure est associée à l'evenement Clic du bouton .
par exemple :

Private Sub CommandButton1_Click()
MsgBox "Le forum XLD"
End Sub


la procedure ci-dessous , insérée dans un module , permet d'activer la macro du CommandButton

Sub lanceEvenementClickBouton()
Application.Run Sheets("Activite").CodeName & ".CommandButton1_Click"
End Sub


bonne soirée
MichelXld
 
C

Clark

Guest
Merci Michel, mais tu ne réponds pas du tout à ma question.

Si tu lis mon message, tu verras que j'ai déjà cette syntaxe! Ce qui me manque c'est de pouvoir passer un paramètre pas d'appeler la procédure click!

Clark
 
C

Clark

Guest
Un paramètre est une valeur que tu utilises dans ta procédure située dans la macro et que tu veux également utiliser dans le code click du bouton.

Exemple :

Procédure Afficher_Nom ()
Dim p_nom as string

p_nom="Jean"

Application.Run Sheets("Activite").CodeName & ".CommandButton1_Click" , p_nom

Fin Procédure

//Là on passe un paramètre p_nom à la procédure de click
//C'est la syntaxe pour passer un paramètre à une procédure autre qu'un évènement click, mais je ne sais pas comment faire pour un évènement click, ca ne semble pas marcher pareil!

procédure CommandButton1_Click (p_nom as string)
msgbox(p_nom)
fin procédure


Clark
 
M

michel

Guest
bonjour Clarck

si tu souhaites que ta variable ( ton parametre ) soit utilisable dans l'ensemble du classeur , il faut remplacer "Dim p_nom As String" par "Public p_nom As String" et la placer tout en haut au dessus de la premiere procedure . ce n'est pas la peine d'ajouter "p_nom" en fin de la ligne Application.run


'dans un module
Public p_nom As String
Procédure Afficher_Nom()
p_nom = "Jean"
Application.Run Sheets("Activite").CodeName & ".CommandButton1_Click"
fin Procédure

'dans la feuille "Activite"
Procédure CommandButton1_Click
MsgBox p_nom
fin Procédure


bonne soirée
MichelXld
 
M

michel

Guest
bonjour Clarck

Cela fonctionne aussi .Dans ce cas , la variable "Public p_nom As String" doit rester dans un module

'la macro du CommandButton dans la feuille
Private Sub CommandButton1_Click()
MsgBox p_nom
End Sub

'la macro du CommandButton dans le UserForm , qui va appeler la premiere macro
Private Sub CommandButton1_Click()
p_nom = "Jean"
Application.Run Sheets("Activite").CodeName & ".CommandButton1_Click"
End Sub


bonne soirée
MichelXld
 
C

Clark

Guest
Bonjour Michel,

merci pour ta réponse, je n'ai pas répondu plus tôt car j'étais en congé!

Une dernière question, où dois-je mettre la déclaration de p_nom si je n'utilise pas de module. Tous mes codes sont dans les boutons, les champs de saisie, les évènements,... mais aucun module n'est visible dans l'explorateur du projet.

Clark :)
 

Discussions similaires

Réponses
32
Affichages
719

Statistiques des forums

Discussions
314 085
Messages
2 105 646
Membres
109 409
dernier inscrit
Minouch 2024