alio25
Messages postés14Date d'inscriptionjeudi 15 mars 2007StatutMembreDernière intervention30 avril 2007
-
27 avril 2007 à 09:18
cs_dugh
Messages postés9Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention23 juillet 2009
-
21 sept. 2007 à 15:49
Bonjour à tous,
je suis très embeté par des processus excel qui restent actifs après l'utilisation d'Excel dans un module de Access.
En fait à chaque utilisation dans ma base de données access, d'une fonction excel je crée un processus que je n'arrive pas à tuer. Pourtant à la fin de la fonction je fais:
Set xlSheet = Nothing 'Destruction Feuille
xlBook.Close SaveChanges:=False 'Ferme classeur sans enregistrer chg
Set xlBook = Nothing 'Destruction Classeur
xlApp.Quit 'Quit appli XL
Set xlApp = Nothing 'Destruction application
et même:
Excel.Application.Quit 'Purger l'application Excel en mémoire
je ne sais plus quoi faire. Mon application n'est pas très propre car je dois à chaque fois supprimer manuellement les processus.
Alors si vous pouvez m'aider, je vous remercie d'avance!
alio25
Messages postés14Date d'inscriptionjeudi 15 mars 2007StatutMembreDernière intervention30 avril 2007 27 avril 2007 à 10:35
En fait, je fais des transfert entre excel et access (importer ou exporter), et dans mes dernières ligne de code pour fermer l'application excel je tape ce code:
Set xlSheet = Nothing 'Destruction Feuille
xlBook.Close SaveChanges:=False 'Ferme classeur sans enregistrer chg
Set xlBook = Nothing 'Destruction Classeur
xlApp.Quit 'Quit appli XL
Set xlApp = Nothing 'Destruction application
et même:
Excel.Application.Quit 'Purger l'application Excel en mémoire
alio25
Messages postés14Date d'inscriptionjeudi 15 mars 2007StatutMembreDernière intervention30 avril 2007 27 avril 2007 à 12:46
Voilà un peu comment j'utilise sous access, Excel:
Dim xlApp As Excel.Application
Dim xlSheet As Excel.Worksheet
Dim xlBook As Excel.Workbook
'Initialisations
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
'Ajouter une feuille de calcul
Set xlSheet = xlBook.Worksheets.Add
xlSheet.Name = Nom
'Ensuite je travaille avec xlSheet.Cells(i, j)
'si export, je sauvegarde avec xlBook.SaveAs monFichier
'et pour finir
Set xlSheet = Nothing 'Destruction Feuille
xlBook.Close SaveChanges:=False 'Ferme classeur sans enregistrer chg
Set xlBook = Nothing 'Destruction Classeur
xlApp.Quit 'Quit appli XL
Set xlApp = Nothing 'Destruction application
et même:
Excel.Application.Quit 'Purger l'application Excel en mémoire
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 27 avril 2007 à 19:58
C'est peut-être normal.. (enfin, presque)
Si tu testes et que tu as une erreur dans ton code, avant de fermer l'appli Excel, (et donc l'ayant ouverte auparavent), celle-ci reste.
Bref, moi je ferai ça :
Dim xlApp As NEW Excel.Application
Dim xlSheet As Excel.Worksheet
Dim xlBook As Excel.Workbook
'Initialisations
<strike>Set xlApp = CreateObject("Excel.Application")
</strike> Set xlBook = xlApp.Workbooks.Add
'Ajouter une feuille de calcul
<strike>Set xlSheet = xlBook.Worksheets.Add</strike>
' pas besoin de rejouter des feuilles, y'en a déjà trois. Suffit d'en renommer une.
Set xlSheet = "Feuil1"
xlSheet.Name = Nom
'Ensuite je travaille avec xlSheet.Cells(i, j)
'si export, je sauvegarde avec xlBook.SaveAs monFichier
'et pour finir
<strike>Set xlSheet = Nothing 'Destruction Feuille
</strike> xlBook.Close SaveChanges:=False
xlApp.Quit ' déplacé d'une ligne
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
@++
<hr width="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, ~Provençal, le Gaulois~
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 28 avril 2007 à 00:43
Effectivement, comme dit Mortalino, si tu fais des tests et que ça ne se rend pas à ta fin de procédure, Excel restera ouvert.
Tu pourrais donc mettre un ou des On Error Goto Erreur
Et dans cette gestion d'erreur, tu fermes l'application de la même façon dont tu procèdes déjà. Tu aurais donc 2 possibilités de fermeture: une normale selon le code et une s'il y a erreur.
alio25
Messages postés14Date d'inscriptionjeudi 15 mars 2007StatutMembreDernière intervention30 avril 2007 30 avril 2007 à 09:27
J'ai réussi à ne plus avoir EXEL.EXE en fin d'utilisation...Tout simplement en suivant vos conseils.
Merci encore.
Une petite chose:
Set xlsheet = "Feuil1"
ça ne marche pas, je crois qu'il faudrait utiliser une fonction pour selectionner la feuille1 et non faire= ("..." vue comme une chaine de caractère sinon).
Je crois que ce serai bien de savoir comment... si quelqu'un le sait????
cs_dugh
Messages postés9Date d'inscriptionlundi 14 avril 2003StatutMembreDernière intervention23 juillet 2009 21 sept. 2007 à 15:49
Merci les gars ca m'a servi aussi!
En fait, il restait une instance de EXCEL.exe en mémoire tant que le
prog tournait: j'imagine que l'appel à xlApp.Apllication.Quit laissait un
pointeur quelque part vers xlApp, et le fait de le passer à xlApp = Nothing ne faisait rien... Normal, tant qu'il y a une instance d'une zone mémoire utilisée quelque part, VB la laisse tranquille.
Du coup ça marche bien, EXEL.exe disparait bien de la mémoire (gestionnaire de tâches), pendant l'exécution du prog. Ainsi on peut le lancer et arrêter excel autant de fois qu'on veut dans le même prog sans encombrer la mémoire!
Merci encore,