|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 39 ![]() |
Bonjour à tous,
J'ai écrit un programme en VBA sous Access (2007) pour ouvrir et fermer des document en Excel (2007), je constate que quand je ferme le fichier en le sauvegardant soir avec l'instruction : ou bien avec l'instruction : alors il enregistre bien, se ferme MAIS il reste toujours un processus Excel sur le gestionnaire de tâche. En revanche, lorsque je ferme le fichier en Excel (2007) sans l'enregistrer avec l'instruction : alors il n'y a pas de processus "résiduel". Comment faire pour avoir la même chose au niveau de la fermeture avec enregistrement (pour qu'il n'y ait plus de processus résiduel). Merci d'avance ! |
|
|
00
|
|
|
#2 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Qu'est-ce qui se passe si tu mets : Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
10
|
|
|
#3 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 39 ![]() |
J'ai déjà essayé.
Il me mets la même chose que si je n'avais pas mis la deuxième des 3 lignes ! |
|
|
00
|
|
|
#4 |
![]() ![]() Didier GONARDFormateur Développeur Office - indépendant Inscription : février 2008 Messages : 2 353 ![]() |
Bonjour,
vérification de base : si tu mets un point d'arrêt avant ton code final et que tu regardes le gestionnaire, tu as combien d'instances Excel ouvertes ? cordialement, Didier
__________________
Didier Gonard Ps : Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite ! Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP N'oubliez pas de mettre : ..quand c'est le cas !
|
|
|
10
|
|
|
#5 | ||||
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 39 ![]() |
Dans les deux cas : fermeture avec enregistrement ou sans enregistrer,
il y a un processus Excel créé et dans le cas de "avec enregistrement", il n'est jamais "tué" : Code :
Code :
|
||||
|
|
00
|
|
|
#6 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Peut-être, ajoute un :
avant pour lui laisser le temps d'enregistrer.
__________________
Cordialement. Daniel Citation:
|
|
|
10
|
|
|
#7 | ||
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 39 ![]() |
Je n'ai pas la propriété DoEvents sur xlApp !
J'avais essayé une avant ... Sinon, au départ, j'ai fait ça Code :
|
||
|
|
00
|
|
|
#8 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Est-ce que tu peux créer une macro dans Excel avec la fonction :
comme ligne de code. Tu appellerais cette macro avant le Quit.
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 39 ![]() |
J'ai fait une fonction avec cette instruction et je l'ai appelé juste avant le quit, mais ça ne marche pas (je sais pas comment appeler une macro pendant mon code mais ça doit être la même chose)
Un élément qui est intéressant, c'est que si j'ouvre le fichier Excel (de manière classique en double cliquant dessus et en le refermant), le processus est "tué" Par contre, purement par programme programme, il me créé beaucoup de processus Excel !! |
|
|
00
|
|
|
#10 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
A tout hasard, avant le "Quit" :
Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
00
|
|
|
#11 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 39 ![]() |
Ça aurait pu ! mais non !
Si je mets avant, ça bug à l'instruction quit vu que l'objet n'existe plus, Si je zappe le quit, ça revient au même !! N'y aurait-il pas un moyen de supprimer les processus Excel par programme ?! Merci encore ! |
|
|
00
|
|
|
#12 | ||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Citation:
Si c'est de créer de multiples instances d'Excel, pourquoi vouloir la fermer et pourquoi ne pas utiliser "GetObject" pour se réapproprier l'instance ouverte ?
__________________
Cordialement. Daniel Citation:
|
||
|
10
|
|
|
#13 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 39 ![]() |
Je pourrais, mais je ne sais pas quel objet je récupère, il se peut que ça soit un fichier excel ouvert autrement...
|
|
|
00
|
|
|
#14 | |
![]() ![]() Didier GONARDFormateur Développeur Office - indépendant Inscription : février 2008 Messages : 2 353 ![]() |
Citation:
@ courriervirtuel Pour ton instance Excel, tu travailles en instance visible ou cachée ? Sinon, il y a de très forte chance qu'il y ait une référence à un objet qui n'est pas supprimée et ton appli reste en l'air... voir si tu as bien libéré toutes tes variables objet et si tu ne crées pas de références implicites ( cqvd : donc il faut écrire ton code de façon explicite) cordialement, Didier
__________________
Didier Gonard Ps : Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite ! Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP N'oubliez pas de mettre : ..quand c'est le cas !
|
|
|
|
10
|
|
|
#15 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 39 ![]() |
Merci pour la réponse,
Je travail en instance cachée... J'ai libéré tous les objets en relation avec l'ouverture de mon fichier Excel. En plus, ça marche avec mais pas avec et pas non plus avec qui sont les deux possible pour quitter avec enregistrement ! J'y comprends rien ! |
|
|
00
|
|
|
#16 | ||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Citation:
__________________
Cordialement. Daniel Citation:
|
||
|
10
|
|
|
#17 | |||
![]() ![]() Didier GONARDFormateur Développeur Office - indépendant Inscription : février 2008 Messages : 2 353 ![]() |
à défaut, il faut chercher pourquoi, sinon ça te retombera dessus à un moment donné
Citation:
Le processus sinon disparaît au déchargement de la variable objet (pointage). Voici un code exemple OK (sous Word, mais bon) Code :
cordialement, Didier
__________________
Didier Gonard Ps : Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite ! Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP N'oubliez pas de mettre : ..quand c'est le cas !
|
|||
|
|
10
|
|
|
#18 |
|
Invité régulier
![]() Inscription : décembre 2007 Messages : 39 ![]() |
En y allant vraiment pas à pas, j'ai remarqué que dès que je rajoute une instruction qui modifie une cellule, le processus n'est pas "tué", même si l'instruction de modification est de type :
!! En résumé, sans aucune modification, si je ferme avec enregistrement (pas d'intérêt, mais bon), le processus est "tué", Si, j'utilise une instruction telle que celle que j'ai mise en haut, le processus n'est pas "tué" !! |
|
|
00
|
|
|
#19 | ||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
@Ormonth :
Citation:
__________________
Cordialement. Daniel Citation:
|
||
|
00
|
|
|
#20 |
![]() ![]() Didier GONARDFormateur Développeur Office - indépendant Inscription : février 2008 Messages : 2 353 ![]() |
Oui, mais sur des pratiques courantes, ils sont souvent référencés (utilité des forums
Sinon, on peut monter un échelon et publier 'un nouveau bug"... Je n'ai pas l'impression qu'on soit dans ce cas, de toutes façons, il faut avant tout en identifier la cause. Si identifié, le contournement est OK, sinon c'est reculer pour mieux sauter.. cordialement, Didier
__________________
Didier Gonard Ps : Pour noter positivement ou négativement un post, vous pouvez cliquer sur les pouces en bas à droite ! Tutoriels : Voir la liste de mes tutoriels et mon site pro sur ma Page DVP N'oubliez pas de mettre : ..quand c'est le cas !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com