Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
 
C

Clark

Guest
Salut Michel,

et si l'appel se fait à partir d'un userform et non d'un module, est-ce que cela marche aussi? A ce moment là, où faut-il déclarer ma variable public?


Merci pour ton aide

Clark
 
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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…