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

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 !
 

kjin

XLDnaute Barbatruc
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

  • tcorrege.xls
    21.5 KB · Affichages: 57

tcorrege

XLDnaute Nouveau
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 !
 

mraskin

XLDnaute Nouveau
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.
 

Discussions similaires

Statistiques des forums

Discussions
312 355
Messages
2 087 550
Membres
103 588
dernier inscrit
Tom59300Tom