MsgBox ActiveSheet.Shapes(Application.Caller).Parent.Parent.Name
Il te faut je pense réécrire légèrement tes macros, le problème surgit si :
- tu ne spécifies pas le classeur concerné ou si tu te bases sur le classeur actif,
le classeur actif n'étant pas forcément le classeur exécutant la macro
En supposant que ta macro est initialement activée à partir d'un bouton de la barre d'outils formulaire,
tu peux écrire
Set wbks = Workbooks(ActiveSheet.Shapes(Application.Caller).Parent.Parent.Name)
Sinon, tu peux directement écrire :
set wbks=workbooks("tonclasseur.xls")
puis tu peux faire référence à tes objets de la manière qui suit :
with wbks
with sheets(1)
.range("A1").value=10
.range("A1").interior.colorindex=39
end with
with sheets("feuil2")
.range("A1").value=10
.range("A1").interior.colorindex=39
end with
end with
ciao