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

Signaler
Messages postés
44
Date d'inscription
jeudi 10 avril 2014
Statut
Membre
Dernière intervention
24 février 2021
-
Messages postés
7326
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
7 avril 2021
-
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

Messages postés
7326
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
7 avril 2021
122
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à

Messages postés
44
Date d'inscription
jeudi 10 avril 2014
Statut
Membre
Dernière intervention
24 février 2021

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))
Messages postés
7326
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
7 avril 2021
122
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à
Messages postés
44
Date d'inscription
jeudi 10 avril 2014
Statut
Membre
Dernière intervention
24 février 2021

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
Messages postés
7326
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
7 avril 2021
122
Pour les formules, il faudrait faire un nouveau post. Ce n'est pas mon fort.

@+ Le Pivert