Détecter et utiliser le NOM d'un OBJET dans une MACRO

Bruno_65
Messages postés
50
Date d'inscription
jeudi 10 avril 2014
Statut
Membre
Dernière intervention
27 juillet 2021
- 24 févr. 2021 à 10:24
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
- 24 févr. 2021 à 17:30
Bonjour,
Je suis débutant en VBA sur Excel...

Comment en cliquant sur un Objet pour déclencher une Macro
détecter automatiquement le NOM de cet Objet dans la macro
et l'utiliser comme une variable ?
-----------------------------------------------------------
Voici ce que je souhaite faire :
1/
- Je crée plusieurs Objets, par ex. des Carrés
et je leur donne un Nom : CAR_01, CAR_02, etc...
- Je veux créer une même Macro que j'attribue à tous les Carrés.
(en cliquant sur n'importe quel CAR_XX, cela déclenche la même Macro).
2/ Pour la MACRO : je voudrai que, en cliquant sur le CAR_XX,
automatiquement le Nom du CAR_XX soit détecté et être utilisé dans la Macro.
en tant que variable.
X = Nom du Carré
est ce possible ?

Voici un exemple :
Je clique sur CAR_07
1/ Cela déclenche la Macro.
2/ Je voudrai que la Macro détecte le nom de ce Carré.
X = "CAR_07" ?

Comment faire ?

Merci d'avance pour votre aide !
Bruno

3 réponses

cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129
Modifié le 24 févr. 2021 à 10:55
Bonjour,

insérer un module et mettre ce code:

Option Explicit
Sub test()
MsgBox "Je me nomme : " & Application.Caller
mamacro
End Sub
Sub mamacro()
'mettre le code
End Sub



ensuite aller sur la feuille où se trouve les shapes( Carré) faire un clic droit sur la shape:
Affecter une macro et sélectionner test

A chaque clic sur la shape la macro se déclenchera

Voilà

0
Bruno_65
Messages postés
50
Date d'inscription
jeudi 10 avril 2014
Statut
Membre
Dernière intervention
27 juillet 2021

24 févr. 2021 à 12:47
Bonjour,
er merci pour votre réponse rapide.
En fait, ce n'est pas tout à fait cela, j'ai dû mal expliquer ma demande...

J'ai compris que " Application Caller" permet de détecter le nom du CAR
sur lequel je clique (et déclenche la macro).

Ce que je souhaite dans la macro que je lance, c'est de créer une variable XXX ayant le nom du Carré

Je vais certainement mal écrire cela... :

'variable XXX
XXX = Application Caller

Je voudrai ensuite, dans la macro, faire un =INDIRECT(RECHERCHEV(XXX;Image!$A$1:$B$9999;2;0))
0
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129
24 févr. 2021 à 13:01
C'est simple, il suffit de déclarer ta variable comme ceci:

Option Explicit
Dim mavar As String
Sub test()
mavar = Application.Caller
mamacro
End Sub
Sub mamacro()
=INDIRECT(RECHERCHEV(mavar;Image!$A$1:$B$9999;2;0))
End Sub


Voilà
0
Bruno_65
Messages postés
50
Date d'inscription
jeudi 10 avril 2014
Statut
Membre
Dernière intervention
27 juillet 2021

24 févr. 2021 à 17:23
Bonjour,
et encore merci !

Il y a cependant un message d'erreur sur cette ligne :

=INDIRECT(RECHERCHEV(mavar;Image!$A$1:$B$9999;2;0))

message : Erreur de compilation
attendu : numéro de ligne ou étiquette ou instruction ou fin d'instruction
0
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129
24 févr. 2021 à 17:30
Pour les formules, il faudrait faire un nouveau post. Ce n'est pas mon fort.

@+ Le Pivert
0