Détecter fermeture d'un classeur Excel

tedparker Messages postés 176 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 25 septembre 2006 - 1 sept. 2006 à 10:31
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 1 sept. 2006 à 15:19
Bonjour,


j'ouvre un fichier Excel par un bouton sur un form VBA et je voudrais, lorsque l'utilisateur a lu et peut-être modifié ce fichier, l'importer dans une table ACCESS.


J'aimerais dc juste savoir comment détecter la fermeture du classeur pour lancer mon import. J'ai entendu parler du BeforeClose du Workbook mais je n'arrive pas à l'implémenter.


Merci

7 réponses

jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
1 sept. 2006 à 11:28
Salut,
Lorsque tu es dans l'éditeur VBA

Tu vas dans le code relatif a ThisWorkBook Et la Dans la liste ou il y a marquer (Général) tu choisis WorkBook

Cela aura pour effet de te mettre automatiquement l'événement Open

Toi ensuite tu as juste a cherche dans la liste de droite.BeforeClose

ce qui te donnera:




Private Sub Workbook_BeforeClose(Cancel As Boolean) 

End Sub 
 







<small> Coloration syntaxique automatique [AFCK]</small>

       







 






@+,   Ju£i?n
0
tedparker Messages postés 176 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 25 septembre 2006
1 sept. 2006 à 11:32
Ouais mais nan c'est pas ça le problème. Jsuis sous ACCESS. J'ai pas ThisWorkbook ds l'explorateur.Ce que jveux c'est un genre de boucle qui vérifie l'ouverture du fichier et à la sortie de celle-làa ben jfais mon import. Le pb c'est de savoir la condition de la boucle.
Merci
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
1 sept. 2006 à 12:09
Est-ce que ton programme Access ouvre toujours le même fichier Excel ou
est-ce que ça peut être n'importe quel fichier xls selon les besoins de
l'utilisateur ?


Personnellement, j'utilise la méthode inverse, je travaille sous Excel
et j'exporte vers Access qui lui n'a pas besoin d'être ouvert.


Je t'aurais suggérer d'utiliser les API et vérifier les processus, mais
si le programme Excel se ferme, le processus n'y est plus et indique
qu'Excel est déjà fermé, donc trop tard pour importer. À moins de
demander à l'utilisateur s'il veut le faire. Si oui, tu le rouvres à
nouveau (invisible au besoin) et importe.


Tu pourrais aussi implémenter la procédure Workbook_BeforeClose à
partir d'Access, je pense. Tu pourrais y mettre un msgbox demandant si
oui ou non le programme doit importer les données et mettre une
variable Global Boolean dans le programme Excel.

À ce moment Access regarde cette variable et lorsqu'elle est True, il importe...


Des idées comme ça...

MPi
0
tedparker Messages postés 176 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 25 septembre 2006
1 sept. 2006 à 12:15
Ouais merci.


L'idée du BeforeClose jl'avais déjà mais j'arrive pas à le faire fonctionner. J'ai bien cette procédure dans mon code mais je me demande comment le VBA pourrait savoir qu'il s'agit de ce WorkBook. J'ai tenté de l'activer mais sans aucune réussite. En fait j'aimerais bien savoir si il y a une propriété d'un Workbook ou d'une Excel.Application du style "isOpen".


Ca me permettrait de tester son ouverture dans une boucle.


Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
1 sept. 2006 à 12:20
Ça dépend comment tu ouvres Excel. Si tu ouvres avec Shell ou ShellExecute, tu auras un processus, c'est tout.


Si tu crées des objets du genre xlApp as Excel.Application, xlBook as
Excel.Workbook, ... à ce moment tu peux utiliser toutes de sortes de
possibilités, comme les Windows

For each Fenêtre in Objet.Windows

...

Next

MPi
0
tedparker Messages postés 176 Date d'inscription mercredi 5 mai 2004 Statut Membre Dernière intervention 25 septembre 2006
1 sept. 2006 à 12:25
Et je fais comment stp pour savoir que c'est bien ma fenêtre Excel ? Je peux avoir le nom du classeur ?
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 17
1 sept. 2006 à 15:19
Tu peux récupérer le handle de la fenêtre excel avec l'api FindWindow.
Il faut que tu connaisses le caption de cette fen^tre.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
Rejoignez-nous