Recuperer la valeur d'un bouton cliqué [Résolu]

Dudulle32 42 Messages postés mercredi 10 mai 2006Date d'inscription 31 janvier 2014 Dernière intervention - 17 sept. 2012 à 18:08 - Dernière réponse : MarcPL 172 Messages postés jeudi 8 décembre 2011Date d'inscription 21 juillet 2013 Dernière intervention
- 19 sept. 2012 à 17:28
Bonjour à tous

Sur une feuille Excel j'ai un schéma (une image) avec plusieurs flux. Sur chacun de ces flux j'ai placé un bouton de formulaire à cliquer.
Le but est d'afficher un userform contenant quelques infos sur ce flux, un peu comme une info bulle.

Je voudrais exécuter la même macro à chaque fois que je clique sur un bouton (facile), mais je voudrais pouvoir récupérer le nom du bouton (bouton 1 ; bouton 2 etc) dans la macro pour pouvoir adapter les infos du flux sélectionné. Ces infos se trouvent dans un grand tableau sur la même feuille que celle qui contient l'image.

Voici mon code (très simple):
Sub Bouton3_Cliquer()

'(on recupere la valeur du bouton dans la variable bouton)

UserForm1.Label2 = Cells(40, bouton).Value
UserForm1.Show

End Sub


En espérant que ce soit faisable...

Merci d'avance.
Afficher la suite 

Votre réponse

21 réponses

Meilleure réponse
MarcPL 172 Messages postés jeudi 8 décembre 2011Date d'inscription 21 juillet 2013 Dernière intervention - 18 sept. 2012 à 11:01
2
Merci
Bonjour Dudulle32 !

Application.Caller t'indique le nom du bouton appelant, exactement ce dont tu as besoin !

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !

Merci MarcPL 2

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de MarcPL
NHenry 14262 Messages postés vendredi 14 mars 2003Date d'inscription 22 septembre 2018 Dernière intervention - 17 sept. 2012 à 18:37
0
Merci
Bonjour,

Ben, avec :
Sub Bouton3_Cliquer()
C'est le bouton Bouton3 qui a été appuyé, quel est le problème ?

Pour automatiser tout ça, tu peux faire une Sub qui prend en paramètre le bouton appuyé :
Sub MaSub(Byval pButton as Button)

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Commenter la réponse de NHenry
Dudulle32 42 Messages postés mercredi 10 mai 2006Date d'inscription 31 janvier 2014 Dernière intervention - 17 sept. 2012 à 19:23
0
Merci
Bonjour

Le soucis c'est que j'appelle la même macro avec tous les boutons (pour ne pas avoir à l'écrire plusieurs fois).

Je vais essayer ta proposition.
Commenter la réponse de Dudulle32
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 17 sept. 2012 à 20:25
0
Merci
Bonjour,
Le ridicule ne tuant pas, je vais me réoudre à paraître bête :
Qu'est donc :
Sub Bouton3_Cliquer()

Car je ne vois pas d'évènement portant ce nom (suis-je donc bête !!!)
Est-ce une procédure ? Est-ce autre chose ? et quoi exactement (car tu n'en parles pas !) ?




________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Dudulle32 42 Messages postés mercredi 10 mai 2006Date d'inscription 31 janvier 2014 Dernière intervention - 17 sept. 2012 à 23:46
0
Merci
Bonjour

Cette procédure est la 1ere qui a été crée (automatiquement) quand j'ai placé mon 1er bouton sur la feuille ; j'ai gardé le nom par défaut, mais tous les autres boutons qui ont suivi font appel à cette même procédure.
Commenter la réponse de Dudulle32
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 18 sept. 2012 à 07:56
0
Merci
Cette procédure est la 1ere qui a été crée (automatiquement) quand j'ai placé mon 1er bouton sur la feuille ; j'ai gardé le nom par défaut

Ah !
De deux choses l'une, dans ce cas :
- ou (comme je l'ai dit plus haut) je suis devenu sénile et bête
- ou ta version de Excel est assez "particulière". Quelle est donc cette version ?

Soyons sérieux !
Tu n'as pas créé une procédure évènementielle (c'est Click et non cliquer, par défaut), mais une macro à laquelle tu as donné le nom Bouton3_Cliquer et que tu lances toi-même ! Ce qui :
- est TRES LOIN d'être pareil !
- ne saurait te permettre (et pour cause) ce que tu cherches à faire !

Alors que la procédure évènementielle d'un bouton se déclenche seule au click de ce bouton (que tu connais alors forcément - comme exposé par NHenry) !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Dudulle32 42 Messages postés mercredi 10 mai 2006Date d'inscription 31 janvier 2014 Dernière intervention - 18 sept. 2012 à 08:25
0
Merci
Bonjour

Désolé je ne suis pas très à l'aise avec les termes.
Donc oui, il s'agit d'une macro qui se lance lors du click sur le bouton (bouton de formulaire).

Dois-je utiliser l'autre type de bouton ?
Commenter la réponse de Dudulle32
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 18 sept. 2012 à 08:33
0
Merci
Donc oui, il s'agit d'une macro qui se lance lors du click sur le bouton (bouton de formulaire).

Seule ? Et avec ce nom ?
Je ne le crois pas !
Allez : metsd-nous ici un copier/coller du code (tout) que contient le module de code de tes macros (Module1, je pense).




________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Dudulle32 42 Messages postés mercredi 10 mai 2006Date d'inscription 31 janvier 2014 Dernière intervention - 18 sept. 2012 à 12:15
0
Merci
Seule ? Et avec ce nom ?
Je ne le crois pas !
Allez : metsd-nous ici un copier/coller du code (tout) que contient le module de code de tes macros (Module1, je pense).


C'est pourtant le cas : Je place un bouton sur la feuille Excel, une fenêtre s'ouvre immédiatement pour me demander d'associer une macro au click du bouton, avec comme nom par défaut Bouton(n°du bouton)_Cliquer.
Je peux alors choisir de créer une nouvelle macro avec ce nom proposé par défaut.

Bien sur lorsque cette macro est crée elle en contient rien du tout, le code que j'ai posté plus haut représente la totalité de ce que j'avais écris.

Je viens de refaire ceci en guise de test:
Sub Bouton3_Cliquer()

nomdubouton = Application.Caller
MsgBox (nomduboutton)
End Sub


mais il n'y a aucun texte dans la msgbox...
Commenter la réponse de Dudulle32
MarcPL 172 Messages postés jeudi 8 décembre 2011Date d'inscription 21 juillet 2013 Dernière intervention - 18 sept. 2012 à 12:40
0
Merci
LoL !   Normal t'as fait une faute de frappe pour le nom de la variable dans le MsgBox !

___________________________________________________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
Commenter la réponse de MarcPL
Dudulle32 42 Messages postés mercredi 10 mai 2006Date d'inscription 31 janvier 2014 Dernière intervention - 18 sept. 2012 à 13:25
0
Merci
En effet, quelle andouille je suis...

En corrigeant la faute de frappe ça fonctionne très bien ; un grand merci à toi :)
Commenter la réponse de Dudulle32
MJPMJPMJP 18 Messages postés jeudi 12 février 2009Date d'inscription 15 février 2013 Dernière intervention - 19 sept. 2012 à 08:58
0
Merci
bonjour a tous

" Le ridicule ne tuant pas, je vais me réoudre à paraître bête "

la rentrée c'est dur pour tout le monde....

merci pour le
"application.caller"

@+JP
Commenter la réponse de MJPMJPMJP
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 19 sept. 2012 à 10:05
0
Merci
Bonjour, MJPMJPMJP,
Continuant à être bête et ne trouvant nulle-part l'évènement "cliquer", je rappelle ma question restée sans réponse :
ou ta version de Excel est assez "particulière". Quelle est donc cette version ?

Mais ton intervention me donne l'espoir d'avoir une réponse : celle que tu vas me donner, toi !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 19 sept. 2012 à 10:46
0
Merci
Et je te rappelle cette question (que j'ai posée) :
Est-ce une procédure ? Est-ce autre chose ? et quoi exactement (car tu n'en parles pas !) ?

et la réponse reçue :
Cette procédure est la 1ere qui a été crée (automatiquement) quand j'ai placé mon 1er bouton sur la feuille ; j'ai gardé le nom par défaut

Or, je ne connais pas de procédure créée automatiquement (lors du placement d'un bouton) autre que la procédure évènementielle Click (et non Cliquer)
Tu m'expliques, maintenant, le chemin pris ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Dudulle32 42 Messages postés mercredi 10 mai 2006Date d'inscription 31 janvier 2014 Dernière intervention - 19 sept. 2012 à 16:02
0
Merci
Quand tu places un bouton directement sur une feuille tu as le choix entre 2 possibilités: Utiliser un bouton qui est un contrôle activex, qui appelle une procédure appelée Private Sub CommandButton(n° du bouton)_Click(), ou bien utiliser un bouton qui est un contrôle de formulaire, qui appelle une macro au choix, mais dont le nom par défaut est Bouton(n° du bouton)_Cliquer

A ma connaissance on trouve ce choix dans toutes les versions de Excel.
Commenter la réponse de Dudulle32
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 19 sept. 2012 à 16:27
0
Merci
1)
Il se trouve que chez moi (version 2007) l'évènement par défaut n'est pas "cliquer", mais clic !
Quelle est donc la version qui propose :
Sub Bouton3_Cliquer()
et non
Sub Bouton7_Clic()
2) tu dis plus haut vouloir la même procédure pour chaque bouton cliqué.
Cela se traduit par :
une procédure unique (appelons-la toto) appelée paer l'évènement Clic de chaque bouton
Exemple :
Sub toto(quoi)
 MsgBox "voilà mes instructions pour " & quoi.Name
End Sub
Sub Bouton6_Clic()
  toto ActiveSheet.Shapes("Bouton 6")
End Sub
Sub Bouton7_Clic()
   toto ActiveSheet.Shapes("Bouton 7")
End Sub

sans Application.Caller
ou encore (avec Application.Caller)
Sub toto()
 MsgBox Application.Caller
End Sub
Sub Bouton6_Clic()
  toto 
End Sub
Sub Bouton7_Clic()
   toto 
End Sub

Je préfère personnellement, dans ce cas, la première méthode qui, n'utilisant pas Application.Caller, est moins gourmande (car directe)
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Dudulle32 42 Messages postés mercredi 10 mai 2006Date d'inscription 31 janvier 2014 Dernière intervention - 19 sept. 2012 à 16:42
0
Merci
Ma version est celle de 2010. ; je viens de vérifier sur la 2003 et effectivement l'intitulé est différent (Bouton1_QuandClic).

Ta variante fonctionne probablement, mais l'avantage de Application.Caller c'est que je n'ai même pas besoin d'une procédure par bouton, j'appelle la même macro avec tous mes boutons.

Pour info voici le code que j'ai finalement utilisé:

Sub Bouton3_Cliquer()

Dim nomduboutton As String
nomduboutton = Application.Caller
Range("A50") = nomduboutton

UserForm1.Label2 = Cells(63, 2).Value
UserForm1.Label3 = Cells(64, 2).Value * 100 & "%"
UserForm1.Label5 = Cells(65, 2).Value * 100 & "%"
UserForm1.Label7 = Cells(66, 2).Value * 100 & "%"
UserForm1.Label9 = Cells(67, 2).Value * 100 & "%"
UserForm1.Label11 = Cells(68, 2).Value * 100 & "%"
UserForm1.Label13 = Cells(69, 2).Value & " kg/h"
UserForm1.Label15 = Cells(70, 2).Value & " °C"
UserForm1.Label17 = Cells(71, 2).Value & " b"
UserForm1.Label19 = Cells(72, 2).Value & " kg/m3"


UserForm1.Show

End Sub


L'écriture dans la cellule A50 permet d'aller de mettre à jour les cellules 63,2 à 72,2 avec une fonctionne recherchev à partir d'une table contenant les caractéristiques de tous mes flux.
Commenter la réponse de Dudulle32
Dudulle32 42 Messages postés mercredi 10 mai 2006Date d'inscription 31 janvier 2014 Dernière intervention - 19 sept. 2012 à 16:45
0
Merci
D'ailleurs au passage il y a un truc que je ne comprend pas ; la fonction val(nomduboutton) ne me donne pas la valeur numérique du bouton (alors que la chaine de texte contient bien cette valeur), j'ai systématiquement 0.
Commenter la réponse de Dudulle32
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 19 sept. 2012 à 16:46
0
Merci
Fais comme tu l'entends.
Vérifie toutefois (sait-on jamais) que la portabilité existe entre deux versions en dépit du fait que la procédure porte un nom différent.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 19 sept. 2012 à 16:57
0
Merci
ne me donne pas la valeur numérique du bouton (alors que la chaine de texte contient bien cette valeur), j'ai systématiquement 0

Parce que la fonction Val(chaine) te retourne la valeur numérique des premiers caractères numériques de la chaîne.
Ainsi : Val("A") = 0
Val("Bc1") = 0
Val("32blabla") = 32


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.