[Access] Pb avec fermeture d'Excel

enigmatoile Messages postés 730 Statut Membre -  
 Cristal -
Bonjour,

J'essaie de piloter Excel depuis Access.
Mon code fonctionne bien en apparence : ouverture d'excel, copie de données, sauveagrde et fermeture.

Mon problème : une instance d'Excel continue à tourner (pas demanière visible mais proccess présent dans le gestionnaire des taches). Cela empeche la bonn e exécution de mon code une deuxième fois. Lorsque je quitte Access, ce process Excel est tué.

Je suppose que j'ai un problème dans la libération des objets.

Can you help me?

Voici mon code :

Private Sub btn_test_Click()
On Error GoTo Err_btn_test_Click
    Dim xlApp As Excel.Application
    Dim xlw As Excel.Workbook
    Dim xls As Excel.Worksheet
    Dim rst As DAO.Recordset
    Dim strFichier As String
    
    'Démarrage d'Excel
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = True
    
    'Ouverture d'un classeur
    Excel.Workbooks.Open ("C:\monchemin\modelebis.xls")
    
    'Ouverture de la requete rqt_toto    
     Set rst = CurrentDb.OpenRecordset("rqt_toto")
    
    'Transfert de données
    xlApp.Range("B14").CopyFromRecordset rst
    Worksheets("Feuil1").Cells(9, 2).Value = "essai"
    
    'Sauvegarde et fermeture
    ActiveWorkbook.SaveAs ("C:\monchemin\modeleter.xls")
    xlApp.Quit
    
    'Libération des objets
    Set rst = Nothing
    Set xls = Nothing
    Set xlw = Nothing
    Set xlApp = Nothing
Exit_btn_test_Click:
    Exit Sub
Err_btn_test_Click:
    Set rst = Nothing
    Set xls = Nothing
    Set xlw = Nothing
    Set xlApp = Nothing
    MsgBox Err.Description
    Resume Exit_btn_test_Click
    
End Sub


Merci d'avance
A voir également:

2 réponses

ptibenou
 
Salut,

Essaye de remplacer cette ligne :

Set xlApp = CreateObject("Excel.Application")

par celle-ci :

Set xlApp = New Excel.Application

Logiquement ça devraoit réagir pareil mais bon on sait jamais...

@+
0
enigmatoile Messages postés 730 Statut Membre 5
 
J'ai essayé mais le comportement est exactement le meme.

Merci quand même ...
0
ptibenou > enigmatoile Messages postés 730 Statut Membre
 
Re,

Essaye de placer un DoEvents dans ton code à plusieurs endroits!

Autrement je vois plus rien d'autre!

Désolé

@+
0
Cristal
 
Bonjour,

j'ai eu le même problème et je viens enfin de trouver une solution de contournement de ce qui semble être un bug crosoft.

La session Excel disparait du gestionnaire de tâche lorsque l'on ferme l'entité qui a ouvert Excel.
Certains parlent d'Access, mais si l'appel est réalisé depuis un formulaire, la fermeture du formulaire ferme aussi Excel.
Donc lorsque je clic sur mon bouton de lancement j'ouvre une fenêtre qui lance ma proc avec ouverture d'Excel et referme cette fenêtre quand ma proc est terminée.

Eric
0