Récupérer le nom du bouton de commande sur lequel on clique
Bonjour à tous,
Je vous expose mon problème :
J'ai, sur une feuille (et non pas un UserForm), crée des boutons de commande (contrôles ActiveX, créés à partir de la boîte à outil contrôles).
Je souhaiterais récupérer le nom du bouton quand je clique dessus. Il faut donc partir du principe qu'en écrivant mon bout de code, je n'inscrit pas le nom du bouton de commande.
Je connais la méthode pour récupérer le nom d'un bouton formulaire sur une feuille :
ActiveSheet.Shapes(Application.Caller).Name
Je connais la méthode pour récupérer le nom d'un bouton de commande sur un UserForm :
Me.ActiveControl.Name
Mais je ne connais pas la méthode pour récupérer le nom d'un bouton de commande sur une feuille !
Je joins un fichier afin d'expliciter un peu plus ce que je recherche.
D'avance merci !
Bonjour Cédric
Et bien tout simplement, en tout cas je pense
Private Sub BActiveX1_Click()
MsgBox Me.BActiveX1.Caption
End Sub
Tu peux mettre ça dans une variable public déclarer dans un module
A+
Bonjour Bruno,
Merci de t'intéresser à mon problème !
Le problème de ta solution, c'est que le nom du bouton apparaît dans le code, or c'est quelque chose que je voudrais éviter :
Je désire en effet que plusieurs boutons, dans différentes feuilles exécutent une procédure dont certains paramètres sont fonction du nom du bouton.
De plus, les boutons de commande sont placés directement sur une feuille Excel, et non pas dans un UserForm, il me semble que dans ce cas, on ne peut pas utiliser "Me" ?
Re,
Le problème de ta solution, c'est que le nom du bouton apparaît dans le code, or c'est quelque chose que je voudrais éviter :
Je désire en effet que plusieurs boutons, dans différentes feuilles exécutent une procédure dont certains paramètres sont fonction du nom du bouton.
Si tu mets des boutons Controle ActiveX, forcément le nom du bouton apparaîtra dans la feuille ou il est créé
Il suffit ensuite d'appeler une procédure avec le contenu du bouton en argument
"Me" qualifie l'objet conteneur, pour un contrôle ActiveX, l'objet conteneur est la feuille donc peut très bien être utilisé
La preuve dans le fichier
Ou alors je n'ai rien compris à ta demande
Bonjour Bruno, le forum
Désolé de ma non réponse, je n'ai pas eu le temps d'essayer la solution proposée, et de donner mon retour.
Grâce à ton exemple, j'ai pu adapter sur mon classeur, et tout marche correctement : j'appelle une procédure, dont l'argument est le nom du contrôle ActiveX et sa position, dans un module. Résultat : un code beaucoup plus clean, et facile à modifier !
Encore merci, et désolé de ne pas pouvoir présenter le résultat, mais je n'ai hélas pas le droit de transmettre le fichier...
Bonne continuation à tous !