Vba: terminer EXCEL.EXE

alio25 Messages postés 14 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 30 avril 2007 - 27 avril 2007 à 09:18
cs_dugh Messages postés 9 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 23 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!

15 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 avril 2007 à 09:29
Salut,
Est tu sur que ce sont la les seules référence que tu fais à Excel, il n'y en aurais pas une cachée quelques part ailleurs

@+: Ju£i?n
Pensez: Réponse acceptée
0
alio25 Messages postés 14 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 30 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

Mais ça ne marche pas. Alors???
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
27 avril 2007 à 11:38
As-tu essayé d'unverser tes commandes ?

       xlBook.Close SaveChanges:=False    'Ferme classeur sans enregistrer chg

       xlApp.Quit 'Quit appli XL

       Set xlSheet = Nothing    'Destruction Feuille
       Set xlBook = Nothing    'Destruction Classeur
       Set xlApp = Nothing    'Destruction application

Est-ce que ça aide ?

Autrement, je pense comme jrivet, il y a peut-être 2 instances qui roulent... (?)

MPi
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 avril 2007 à 11:43
IL faudrait que l'on sache comment tu instancies xlApp .
Car peu être que tu passe deux fois a l'endroit ou tu instancie xlApp

@+: Ju£i?n
Pensez: Réponse acceptée
0

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

Posez votre question
alio25 Messages postés 14 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 30 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

Et là EXCEL.EXE qui demeure.

merci MPi, j'ai essayé mais ça ne marche pas.

 ça me déprime ça!!!!
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
27 avril 2007 à 13:45
Salut,
En mode debug j'ai  le meme problème que toi et si j'enlève la ligne
Excel.Application.Quit   

je n'ai plus de souci. essaie chez toi pour voir?

@+: Ju£i?n
Pensez: Réponse acceptée
0
alio25 Messages postés 14 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 30 avril 2007
27 avril 2007 à 15:36
Rien à faire, j'zi toujours le processus EXCEL.EXE dans mon gestionnaire de taches windows.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
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~
  
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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.

MPi
0
alio25 Messages postés 14 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 30 avril 2007
30 avril 2007 à 08:47
Salut à vous,

désolé pour mon absence j'ai pris mon wk.

Merci pour vos conseils, je pense que ça devrais marcher maintenant.
Je teste tout ça et je vous tiens au courant.
a+
0
alio25 Messages postés 14 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 30 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????
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
30 avril 2007 à 10:48
Essaie comme ceci
Set xlSheet = Sheets("Feuil1")

MPi
0
alio25 Messages postés 14 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 30 avril 2007
30 avril 2007 à 12:31
C'est parfait.


Merci
0
alio25 Messages postés 14 Date d'inscription jeudi 15 mars 2007 Statut Membre Dernière intervention 30 avril 2007
30 avril 2007 à 12:41
En fait  Set xlSheet = "Feuil1" utilisé comme Mortalino me la conseillé me donne une erreur:
Le serveur distant n'existe pas ou n'est pas disponible

Je pense que c'est l'instanciation qui ne doit pas être complète.      
0
cs_dugh Messages postés 9 Date d'inscription lundi 14 avril 2003 Statut Membre Dernière intervention 23 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,

go gO GO !!
0
Rejoignez-nous