Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/01/2012, 17h25   #1
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Par défaut Processus Excel.exe rémanent

Bonjour,

Je m'en remets à vous car je ne trouve pas de solution à ce problème.

Je suis en train de faire de l'automation entre ACCESS 97 et office 2003. Et je ne sais pas pourquoi le processus Excel.exe reste en mémoire.

Voici mon code réduit à son strict minimum faisant apparaître mon problème :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Public Sub Test()
 
    ' Déclaration des variables
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim plage As Excel.Range
    Dim nbreLignes As Integer
    Dim strPath As String, strFilter As String
 
    'Récupération du chemin du fichier excel à ouvrir grâce à une boîte de dialogue
    'Voir module mod_ouvrirFichier
    strFilter = ahtAddFilterItem(strFilter, "Classeurs Excel (*.xls)", "*.xls")
    strPath = ahtCommonFileOpenSave(filter:=strFilter, OpenFile:=True, DialogTitle:="Choisissez votre fichier Excel :", Flags:=ahtOFN_HIDEREADONLY)
    If strPath = "" Then Exit Sub
 
    'Ouverture du classeur Excel
    Set xlApp = CreateObject("Excel.Application")
    xlApp.Visible = True
    Set xlBook = xlApp.Workbooks.Open(strPath)
    Set xlSheet = xlBook.Sheets("Sheet1")
    xlSheet.Unprotect
 
    'Définition de la plage de valeurs à vérifier (la colonne avec le nom de la ressource)
    nbreLignes = xlSheet.Cells(16, 6).End(xlDown).Row
    Set plage = Range("F16:F" & nbreLignes)
 
    ' Sauvegarde du classeur excel
    xlSheet.Protect
    xlBook.Save
    xlApp.Quit
 
    'Libération des objets et sortie de la routine
    Set plage = Nothing
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
 
End Sub
Si qqun sait d'où vient le problème mais surtout comment le résoudre, cela m'intéresse.

Cordialement.
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 17h47   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 878
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 878
Points : 10 743
Points : 10 743
Envoyer un message via MSN à jpcheck
salut,

tu utilises à la fois le Early binding et le CreateObject dans ton code.

Je partirai sur une suppression du CreateObject et l'ajout du New

Code :
1
2
3
4
Dim xlApp As New Excel.Application
 
...
xlApp.Quit
pas d'autre piste pour l'instant
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 17h58   #3
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 952
Points : 30 952
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

As-tu déjà Excel d'ouvert lorsque tu lances ton code ?

Salut JP

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 20h04   #4
Responsable Access
 
Avatar de Arkham46
 
Inscription : septembre 2003
Messages : 4 300
Détails du profil
Informations personnelles :
Localisation : France, Loiret (Centre)

Informations forums :
Inscription : septembre 2003
Messages : 4 300
Points : 7 938
Points : 7 938
Bonjour,

Il ne faut pas appeler des objets Excel directement :
Code :
Set plage = xlSheet.Range("F16:F" & nbreLignes)
serait plus approprié.

Faire de même pour tous les appels à des objets Excel => préciser l'objet parent.
__________________
Assistant de création/modification de rubans Office
Utilisez en VBA les librairies graphiques GDI, GDI+ et openGL

Blog Office Mon Site DVP
Arkham46 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/01/2012, 17h30   #5
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Merci beaucoup pour vos éléments de réponse Je teste ça demain et je vous dis quoi
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 11h39   #6
Membre éclairé
 
Homme Pierre-Jean
Développeur informatique
Inscription : février 2010
Messages : 306
Détails du profil
Informations personnelles :
Nom : Homme Pierre-Jean
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur informatique
Secteur : Industrie

Informations forums :
Inscription : février 2010
Messages : 306
Points : 330
Points : 330
Envoyer un message via MSN à paidge
Bonjour à tous.

Arkham46, tu avais raison ! C'était bien cela qui posait problème

Merci beaucoup.
__________________
L'informatique fait gagner beaucoup de temps. A condition d'en avoir beaucoup devant soi !!!
paidge est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h14.


 
 
 
 
Partenaires

Hébergement Web