Plusieurs boutons pour la même macro

Bonjour à tous.

J'ai une feuille avec plusieurs boutons (il seront à terme une cinquantaine).

Les boutons exécutent un code qui est toujours le même.

Ce qui change, est une variable numérique 1, 2, 3, 4..... qui entre en jeu dans le calcul.

L'idéal serait de passer cette valeur à la macro par le bouton.

Malheureusement, quand on associe un macro à un bouton, on ne pet pas transmettre de valeurs à la macro.

Entre autre, j'ai pensé de nommer mes bouton "bouton_01", "bouton_02", "bouton_03", "bouton_04"..., de lire le nom du bouton cliqué et de récupérer la partie numérique à droite du nom pour obtenir ma fameuse variable.

Il est dons essentiel, d'une manière ou d'un autre, obtenir le nom du bouton qui à été cliqué.

Mais comment peut-on savoir à l'intérieur de la macro quel bouton à été cliqué ?

J'ai essayé plusieurs méthodes, aussi avec Shape, ShapeRange, j'ai aussi lu quelque chose sur la méthode de Group Shapes. Je pourrais passer par la propriété Item(x) de l'objet shape. Mais il me semble que si ces méthodes sont capables de créer, de définir ou de pointer sur un bouton, elle ne sont pas capables de lire l'évènement "click" du boutons.

Que dois-je faire ?

écrire cinquante sub(), une par boutons avec la valeur de la variable ?

Il n'y aurait-il un autre système un peu plus rationnel ?

Merci d'avance à vos bons cœurs.

Salut,

et en mettant ta variable dans une cellule, et en indiquant dans ta macro par exemple:

dim variable as integer
variable = sheets("XX").range("B1").value

en supposant que B1 contiennent ta variable...

Souri84

Le problème c'est que cette variable dépend du bouton qu'on clique, et plus exactement de sa position sur la feuille.

Enfin tu me donne une idée.

De faire de faux boutons avec des cellules, et de déclencher la macro par l'évènement click d'une cellule, SelectionChange ou autre.

Dans ce cas là je pourrais détecter la position et passer un paramètre à ma macro.

Mais bon, c'est du bricolage, et avant de me lancer dans cette solution, je voulais savoir si c'est une question d'ignorance (la mienne) ou d'impossibilité technique.

Bonjour,

en supposant que le shape appelant la macro se nomme "Rectangle 1", il y a donc dix caractères avant le chiffre (l'espace compte pour un caractère)

Donc :

Sub qui_m_appelle()
Dim x As Byte
x = Right(Application.Caller, Len(Application.Caller) - 10)
End Sub

on extrait donc les chiffres à droite, Len servant à comptabiliser le nombre de carctères, auquel il faut soustraire les caractères "texte" de ton objet (ici, 10)

Merci Felix,

j'avais pensé au travail sur les 'String" pour extraire ma valeur.

Ce que je ne sui pas capable de faire, c'est de détecter le nom du Shape dans ma macro.

Je suppose que ton "Application.Caller" sert à faire cela. C'est exactement ce que je cherche à savoir....

J'essaye tout de suite

Merci Felix,

c'est bien "Application.Caller" que je cherchais.

Là, avec "Left" et "Right", je peut travailler les noms de mes boutons pour créer toutes les variables que je veux.

Génial !

Rechercher des sujets similaires à "boutons meme macro"