Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

référence à l'objet qui déclenche un évènement

  • Initiateur de la discussion Initiateur de la discussion tcorrege
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

tcorrege

XLDnaute Nouveau
Bonjour,
Je vais essayer d'être très clair...
Donc, j'ai un ensemble de zone de textes auxquelles je veux affecter une macro.
Je sais automatiser cela avec

ActiveSheet.Shapes("Text Box 318").Select
Selection.OnAction = "Feuil3.tb318"
ActiveSheet.Shapes("Text Box 319").Select
Selection.OnAction = "Feuil3.tb319"

Mais pour me simplifier la vie, comme j'ai beaucoup (vraiment) de textbox, et plutot que de générer du code (avec l'excelente méthode de MCRomain
Sub test()
Dim composantVB
Set composantVB = ThisWorkbook.VBProject.VBComponents("Feuil1")
composantVB.CodeModule.AddFromString "Sub MacroTest()" & vbNewLine & "MsgBox ""test""" & vbNewLine & "End Sub"
End Sub
)


je voudrais n'avoir qu'une seule fonction cible, et pouvoir savoir dans la fonction sur quel text box on a cliqué..
J'aurais alors qq chose du style :

ActiveSheet.Shapes("Text Box 318").Select
Selection.OnAction = "Feuil3.MaFct"
ActiveSheet.Shapes("Text Box 319").Select
Selection.OnAction = "Feuil3.MaFct"

et
sub Mafct()
dim c as shape
set c = Me.LeControleSurLequelJaiCliqué
end sub



Merci de vos réponses pertinentes !
 
Re : référence à l'objet qui déclenche un évènement

Bonsoir,
Si j'ai compris qq chose
Code:
Sub MarcelEtHuguette()
On Error Resume Next
Run Application.Caller

End Sub

Sub Marcel()
MsgBox "Coucou c'est Marcel"
End Sub

Sub Huguette()
MsgBox "Coucou c'est Huguette"
End Sub
A+
kjin
 

Pièces jointes

Re : référence à l'objet qui déclenche un évènement

Merci encore, Parfait !

Application.caller contient dans mon cas le nom du textbox.

Macrotest est associé à plusieurs textbox

Au final je fais ça

Sub MacroTest()
Dim t As String
Dim objWorkbook As Workbook

'declaration objet workbook
Set objWorkbook = Workbooks("mccommun.xla")
'instanciation vers un classerur de macro qui est ouvert automatiquement
Dim s As Shape ' declaration d'un shape
Set s = Shapes(Application.Caller)
' instanciation sur l'objet appelant
t = objWorkbook.Application.Run("test4", s)
'appel de la fonction test4 qui est dans un module du xla. Cette fonction admet un parametre par reference (la shape)qui permetra de le modifier (couleur...) et renvoie une chaine.
End Sub

Ce qui va me permettre de ne par avoir des centaines de lignes de code !
Merci !
 
Re : référence à l'objet qui déclenche un évènement

Bonjour,

application.caller ... est probablement ce que je cherche depuis longtemps ! En effet, dans excel 2003 je mettais comme macro sur une shape le nom d'une fonction et son paramètre (exemple : maFonction"maValeur1" sur une shape, maFonction"maValeur2" sur une autre shape ....) Cela fonctionnait très bien en 2003, et fonctionnait en 2007 mais ne pouvais pas être sauvegardé au format 2007 (.xlsm).
Je vais donc essayer de recoder avec application.caller et je pense que cela va rouler !

Merci,
Michel.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
22
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…