Lancer macro lors de la fermeture d'un autre classeur

Ewigefrost

XLDnaute Junior
Bonjour à tous,

J'aimerais savoir s'il est possible de faire une macro qui se lancerait quand un classeur Excel (autre que celui contenant la macro à effectuer) se ferme.

En effet, j'ai un programme qui m'exporte un fichier Excel toutes les heures (il l'ouvre et le ferme de suite) et j'aimerais en fait récupérer les valeurs contenues dans ce fichier (sur un range("A1: D25") disons) à chaque nouvelle exportation (càd dès que ce fichier se ferme) et les coller dans le classeur qui exécutera la macro.

Est-ce possible ?

L'événement "Workbook_close" irait bien, mais il ne s'applique qu'au classeur contenant la macro, et ce n'est pas ce que je souhaite.

Je suis preneur de toutes idées ;)

Merci beaucoup, à+ !

PS: j'ai déjà pensé à exécuter une macro qui serait placé sur le fichier exporté et qui s'éxécuterait à chaque ouverture de celui-ci, mais ce fichier ne supporte pas les macros, impossible de faire comme ça donc ...
 
Dernière édition:

Ewigefrost

XLDnaute Junior
Re : Lancer macro lors de la fermeture d'un autre classeur

Bonjour,

j'ai testé ce fichier et après avoir eu 2-3 soucis avec le code que je voulais placer dedans, ça fonctionne maintenant comme il faut.

Merci infiniment sousou, c'est très sympa de votre part de m'avoir aidé, ainsi que tous les autres qui ont participé à la discussion ;)
 

Ewigefrost

XLDnaute Junior
Re : Lancer macro lors de la fermeture d'un autre classeur

Rebonjour,

je reviens à vous (notamment sousou, si vous avez le temps) concernant le code VBS donné :

Code:
Set appli= WScript.CreateObject("WScript.Shell")
chemin=left(wscript.Scriptfullname,len(wscript.scriptfullname)-len(wscript.name))
Set fso=CreateObject("Scripting.FileSystemObject")
h= time
hmax= dateadd("n",120,time)

 while time < hmax
	set fich= fso.getfile(chemin & "fichier1.xlsx")

	if version <> fich.datelastmodified then
	version= fich.datelastmodified 
	Set appli= WScript.CreateObject("excel.Application")
	set monfichier=appli.workbooks.open(chemin & "fichier2.xlsm")
	appli.visible=2
	appli.run("deb")
	
	'appli.quit

	end if

	wscript.sleep(5000)
	

	
wend

msgbox "fin"

J'aurais 3 questions :

-le 120 dans le dateadd correspond bien à la fréquence de vérification de la date du fichier (indirectement) ?
-à quoi correspond le appli.visible ? J'ai cherché sur Google mais je n'ai rien trouvé là-dessus.
-le wscript.sleep correspond bien à la durée d'exécution du programme non (en ms) ?

Merci d'avance !
 

sousou

XLDnaute Barbatruc
Re : Lancer macro lors de la fermeture d'un autre classeur

Bonjour

- Non ! le dateadd permet de définir à quel moment le programme vbs s’arrête.
ici 120 mn(n) après l'heure de lancement.
- La fréquence est définie par le wscript.sleep : le programme attend 5000 ms avant de refaire le teste donc ici tous les 5 secondes

Donc le programme tourne pendant 120mn et contrôle le fichier toutes les 5 secondes
A toi de l'adapter à tes besoins.

- Appli.visible permet de rendre l'application excel visible si false rien n'est visible.
Danger dune appli invisible, si elle se plante pour une raison quelconque ce n'est visible et contrôlable que par le gestionnaire de tâches
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 905
Membres
103 982
dernier inscrit
krakencolas