XL 2019 Déclencher une macro d'un classeur fermé

pat66

XLDnaute Impliqué
Bonjour Le forum,

Dans le même dossier, j'ai 2 classeurs test1.xlsm et test2.xlsm
Mon problème :
Comment peut on activer une macro située dans un module standard de test2 en ouvrant test1

j'ai bien essayé dans test1 avec :
Private Sub Workbook_Open()
Application.Run ThisWorkbook.Path & "\test2.xlsm'mamacro"
end sub

mais cela donne "erreur d'execution 1004", je précise que le classeur, les feuilles et le vba sont protégés

pourriez vous m'aidez svp

merci et belle journée à toutes et à tous
 
Dernière édition:

danielco

XLDnaute Accro
Je ne vois pas comment la macro pourrait être ouverte, sans que le fichier soit lui même ouvert ... et que la macro soit alors interprétée par Excel ... En tous cas ... c'est la manière de faire que j'utilise ... il y a peut-être mieux ... mais cela fonctionne et est transparent pour l'utilisateur ... (l'appel tel qu'indiqué ouvre le classeur et exécute la macro + la commande de fermeture en fin de macro)
(dans mon cas, chacun des 100 utilisateurs a son propre fichier excel avec ses propres données ... et quand ils cliquent sur le bouton, ils appellent tous la même macro ... si je dois faire une modif sur la macro, je ne la fait que sur 1 fichier ... et pas sur les 100. S'ils sont susceptibles de cliquer en même temps, il faut activer le partage de fichier sur le fichier de la macro)
C'était justement la question. ceci dit, Power Query sait lire des cellules sans que le classeur soit ouvert, par exemple...

Daniel
 

mbmb

XLDnaute Nouveau
toujours pas = erreur 1004

pensez vous que c'est correctement écris notamment ThisWorkbook.Path &
Application.Run ThisWorkbook.Path & "\test2.xlsm!mamacro"

cette macro fonctionne bien, y pourrais je ajouter l'instruction pour activer la macro ?
Workbooks.Open Filename:=ThisWorkbook.Path & "\test2.xlsm"

merci
N'as-tu pas la possibilité de mettre tes 2 fichiers à disposition ?
 

job75

XLDnaute Barbatruc
Bonsoir,
N'as-tu pas la possibilité de mettre tes 2 fichiers à disposition ?
oui bien suri
Cela aurait dû être fait dès le début non ?

Dans test2.xlsm la macro entraîne le suicide du fichier !

Donc il suffisait de mettre dans test1.xlsm la macro :
VB:
Private Sub Workbook_Open()
On Error Resume Next
Workbooks("test2.xlsm").Close False 'ferme le fichier s'il est ouvert
Kill ThisWorkbook.Path & "\test2.xlsm"
End Sub
A+
 

pat66

XLDnaute Impliqué
Bonjour le fil
Bonjour Job75, bonjour Danreb

je vous remercie beaucoup et c'est vrai qu'un fichier exemple est beaucoup plus explicite pour vous.
En tout cas, Les 2 solutions fonctionnent parfaitement

J'ai encore 2 questions qui me turlupine:
1- Comment ajouter un second fichier à éliminer, exemple test2 et test3
2- dans le cas ou le fichier à éliminer n'est pas dans le même répertoire "ThisWorkbook.Path" peut on demander à la macro de le chercher sur C:

merci
 

job75

XLDnaute Barbatruc
Bonjour pat66, le forum,
VB:
Private Sub Workbook_Open()
On Error Resume Next
Workbooks("test2.xlsm").Close False 'ferme le fichier s'il est ouvert
Workbooks("test3.xlsm").Close False 'ferme le fichier s'il est ouvert
Kill ThisWorkbook.Path & "\test2.xlsm"
Kill ThisWorkbook.Path & "\test3.xlsm"
Kill "C:\test2.xlsm" 'sur disque C
Kill "C:\test3.xlsm" 'sur disque C
End Sub
A+
 

pat66

XLDnaute Impliqué
Job75,
cela fonctionne si test2 et test3 sont dans le même dossier que test1, mais pas si test2 et test3 sont sur C: ou sur le bureau

peut être une idée pour les supprimer ou qu'ils soient sur le disque dur ?
 
Dernière édition:

job75

XLDnaute Barbatruc
Le code du post #23 supprime les fichiers s'il sont sur le disque C mais pas dans un de ses dossiers.

Pour les supprimer de tous les dossiers et sous-dossiers de C faites une recherche sur le mot récursivité, le problème a déjà été traité.
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 913
Membres
101 837
dernier inscrit
Ugo