Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ouverture/fermeture application Excel

10 réponses
Avatar
Jacques
Bonjour,

Je suis devant un problème que je n'arrive pas à résoudre ! J'ouvre une
application Excel pour traiter un fichier mais après la fermeture, le
processus Excel.exe reste dans la liste des processus (CTRL-ALT-DEL).

Erreur de codage ?

Voici le code :

Dim xlApp As Object
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set xlApp = CreateObject("excel.Application")
'ouvre le fichier
xlApp.Workbooks.Open (repsource + "\" + chiffrierExcel), , True

Mon_traitement

xlApp.Quit
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing

Merci de vos réponses


Jacques

10 réponses

Avatar
3stone
Salut,

"Jacques"
| Je suis devant un problème que je n'arrive pas à résoudre ! J'ouvre une
| application Excel pour traiter un fichier mais après la fermeture, le
| processus Excel.exe reste dans la liste des processus (CTRL-ALT-DEL).
|
| Erreur de codage ?
|
| Voici le code :
|
| Dim xlApp As Object
| Dim xlBook As Excel.Workbook
| Dim xlSheet As Excel.Worksheet
|
| Set xlApp = CreateObject("excel.Application")
| 'ouvre le fichier
| xlApp.Workbooks.Open (repsource + "" + chiffrierExcel), , True
|
| Mon_traitement


xlApp.Workboos.Close


| xlApp.Quit
| Set xlApp = Nothing
| Set xlBook = Nothing
| Set xlSheet = Nothing


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Blaise Cacramp
Bonjour


Et les "nothing" dans le sens inverse ?


xlApp.Quit
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

- À noter que si tu n'utilises pas xlBook et xlSheet, n'en fait pas des set
--
Cdt

--
Cdt
"Jacques" a écrit dans le message de news:
%
Bonjour,

Je suis devant un problème que je n'arrive pas à résoudre ! J'ouvre une
application Excel pour traiter un fichier mais après la fermeture, le
processus Excel.exe reste dans la liste des processus (CTRL-ALT-DEL).

Erreur de codage ?

Voici le code :

Dim xlApp As Object
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set xlApp = CreateObject("excel.Application")
'ouvre le fichier
xlApp.Workbooks.Open (repsource + "" + chiffrierExcel), , True

Mon_traitement

xlApp.Quit
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing

Merci de vos réponses


Jacques




Avatar
Jacques
bonjour Pierre,

J'ai fermé le workbook mais cela ne change rien !?

J'ai testé avec l'application visible. Excel s'ouvre, ensuite le fichier est
bien ouvert dans l'application Excel, le fichier se ferme, etc .

Quand j'arrive à la fermeture, l'application Excel disparait bien de ma
barre de tâche mais le processus reste ouvert dans le gestionnaire de
tâches. J'ai donc une erreur quand je continue mes traitements et que je
veux ouvrir Excel à nouveau ??

Aurais-tu une autre idée ??

J'ai mis mes Set dans le bon ordre à la fermeture mais c'est sans effet ?
:-(


Merci vous deux

Jacques

"3stone" a écrit dans le message de
news:
Salut,

"Jacques"
| Je suis devant un problème que je n'arrive pas à résoudre ! J'ouvre une
| application Excel pour traiter un fichier mais après la fermeture, le
| processus Excel.exe reste dans la liste des processus (CTRL-ALT-DEL).
|
| Erreur de codage ?
|
| Voici le code :
|
| Dim xlApp As Object
| Dim xlBook As Excel.Workbook
| Dim xlSheet As Excel.Worksheet
|
| Set xlApp = CreateObject("excel.Application")
| 'ouvre le fichier
| xlApp.Workbooks.Open (repsource + "" + chiffrierExcel), , True
|
| Mon_traitement


xlApp.Workboos.Close


| xlApp.Quit
| Set xlApp = Nothing
| Set xlBook = Nothing
| Set xlSheet = Nothing


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)



Avatar
Blaise Cacramp
Bon,

N'y a t'il pas une erreur (avec un message) dans ton Excel ?
N'ouvres-tu pas une nouvelle instance ?

J'ai fait beaucoup d'automation avec Excel. En phase de develop, je le mets
toujours à visible. Je repère ainsi les erreurs plus facilement.
Quand tout est bien débogué, je met le visible à false (et ça augmente
spectaculairement la vitesse).
Mais s'il y a bug, l'instance reste ouverte et bonjour les problèmes...
n'est-ce pas !

--
Cdt
"Jacques" a écrit dans le message de news:

bonjour Pierre,

J'ai fermé le workbook mais cela ne change rien !?

J'ai testé avec l'application visible. Excel s'ouvre, ensuite le fichier
est
bien ouvert dans l'application Excel, le fichier se ferme, etc .

Quand j'arrive à la fermeture, l'application Excel disparait bien de ma
barre de tâche mais le processus reste ouvert dans le gestionnaire de
tâches. J'ai donc une erreur quand je continue mes traitements et que je
veux ouvrir Excel à nouveau ??

Aurais-tu une autre idée ??

J'ai mis mes Set dans le bon ordre à la fermeture mais c'est sans effet ?
:-(


Merci vous deux

Jacques

"3stone" a écrit dans le message de
news:
Salut,

"Jacques"
| Je suis devant un problème que je n'arrive pas à résoudre ! J'ouvre une
| application Excel pour traiter un fichier mais après la fermeture, le
| processus Excel.exe reste dans la liste des processus (CTRL-ALT-DEL).
|
| Erreur de codage ?
|
| Voici le code :
|
| Dim xlApp As Object
| Dim xlBook As Excel.Workbook
| Dim xlSheet As Excel.Worksheet
|
| Set xlApp = CreateObject("excel.Application")
| 'ouvre le fichier
| xlApp.Workbooks.Open (repsource + "" + chiffrierExcel), , True
|
| Mon_traitement


xlApp.Workboos.Close


| xlApp.Quit
| Set xlApp = Nothing
| Set xlBook = Nothing
| Set xlSheet = Nothing


--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)







Avatar
3stone
Salut,

"Jacques"
| J'ai fermé le workbook mais cela ne change rien !?


J'ai expressément testé ton code... ;-)

Sans le .close Excel reste ouvert, avec le close, il se ferme.



| J'ai testé avec l'application visible. Excel s'ouvre, ensuite le fichier est
| bien ouvert dans l'application Excel, le fichier se ferme, etc .
|
| Quand j'arrive à la fermeture, l'application Excel disparait bien de ma
| barre de tâche mais le processus reste ouvert dans le gestionnaire de
| tâches. J'ai donc une erreur quand je continue mes traitements et que je
| veux ouvrir Excel à nouveau ??


Tu écris:


Set xlApp = CreateObject("excel.Application")
'ouvre le fichier
xlApp.Workbooks.Open (repsource + "" + chiffrierExcel), , True

Mon_traitement

xlApp.Quit
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing


Mais après ton traitement, tu sauve ou tu annulle ton document, si tu le modifie ?

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Blaise Cacramp
Bonsoir


J'ai aussi expressément testé le code, cela fonctionne sans le "close"
Mais y aurait-il pas un "save" à faire quelque part ?


Les fihiers Excel fabriqués en automation par moi, n'étaient pas fait pour
être spécialement sauvegardés, mais plutôt imprimés ou lus.

Ainsi la fin est celle-ci :

xlApp.Visible = True
DoCmd.Hourglass False
Dim EnregistrerSous As Dialog
Set EnregistrerSous = xlApp.Dialogs(xlDialogSaveAs)
EnregistrerSous.Show

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

Exit Sub


--
Cdt
"3stone" a écrit dans le message de news:

Salut,

"Jacques"
| J'ai fermé le workbook mais cela ne change rien !?


J'ai expressément testé ton code... ;-)

Sans le .close Excel reste ouvert, avec le close, il se ferme.



| J'ai testé avec l'application visible. Excel s'ouvre, ensuite le fichier
est
| bien ouvert dans l'application Excel, le fichier se ferme, etc .
|
| Quand j'arrive à la fermeture, l'application Excel disparait bien de ma
| barre de tâche mais le processus reste ouvert dans le gestionnaire de
| tâches. J'ai donc une erreur quand je continue mes traitements et que je
| veux ouvrir Excel à nouveau ??


Tu écris:


Set xlApp = CreateObject("excel.Application")
'ouvre le fichier
xlApp.Workbooks.Open (repsource + "" + chiffrierExcel), , True

Mon_traitement

xlApp.Quit
Set xlApp = Nothing
Set xlBook = Nothing
Set xlSheet = Nothing


Mais après ton traitement, tu sauve ou tu annulle ton document, si tu le
modifie ?

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)






Avatar
Jacques
bonjour vous deux

J'ai deux fonctions :

La première lit chacun des fichiers se trouvant dans un répertoire et je
récupère une donnée se trouvant dans une cellule. À partir de cette données
les fichiers sont renommés.

C'est lorsque j'exécute la deuxième fonction qui récupère toutes les données
du fichier que cela ne fonctionne plus. Le code est identique et pourtant
lorsque je veux sélectionner une feuille, je reçois un message me disant que
le serveur distant n'est pas accessible !!????

Je travaille sur mon disque C: !!!

Si j'exécute chaque fonction séparément pas de problème, si je les exécute
l'une après l'autre ca plante !! ??

Jacques


"Blaise Cacramp" a écrit dans le message de
news:%
Bonsoir


J'ai aussi expressément testé le code, cela fonctionne sans le "close"
Mais y aurait-il pas un "save" à faire quelque part ?


Les fihiers Excel fabriqués en automation par moi, n'étaient pas fait pour
être spécialement sauvegardés, mais plutôt imprimés ou lus.

Ainsi la fin est celle-ci :

xlApp.Visible = True
DoCmd.Hourglass False
Dim EnregistrerSous As Dialog
Set EnregistrerSous = xlApp.Dialogs(xlDialogSaveAs)
EnregistrerSous.Show

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing

Exit Sub


--
Cdt
"3stone" a écrit dans le message de news:

> Salut,
>
> "Jacques"
> | J'ai fermé le workbook mais cela ne change rien !?
>
>
> J'ai expressément testé ton code... ;-)
>
> Sans le .close Excel reste ouvert, avec le close, il se ferme.
>
>
>
> | J'ai testé avec l'application visible. Excel s'ouvre, ensuite le


fichier
> est
> | bien ouvert dans l'application Excel, le fichier se ferme, etc .
> |
> | Quand j'arrive à la fermeture, l'application Excel disparait bien de


ma
> | barre de tâche mais le processus reste ouvert dans le gestionnaire de
> | tâches. J'ai donc une erreur quand je continue mes traitements et que


je
> | veux ouvrir Excel à nouveau ??
>
>
> Tu écris:
>
>
> Set xlApp = CreateObject("excel.Application")
> 'ouvre le fichier
> xlApp.Workbooks.Open (repsource + "" + chiffrierExcel), , True
>
> Mon_traitement
>
> xlApp.Quit
> Set xlApp = Nothing
> Set xlBook = Nothing
> Set xlSheet = Nothing
>
>
> Mais après ton traitement, tu sauve ou tu annulle ton document, si tu le
> modifie ?
>
> --
> A+
> Pierre (3stone) Access MVP
> Perso: http://www.3stone.be/
> MPFA: http://www.mpfa.info/ (infos générales)
>
>
>
>




Avatar
Blaise Cacramp
Hi


22h00 L'orage est passé à côté - enfin, le 1er, il peut y en avoir d'autres
cette nuit.

À te lire, le problème n'est pas dans le code d'ouverture et de fermeture,
mais bien à l'intérieur du traitement.

La première lit chacun des fichiers se trouvant dans un répertoire et je
récupère une donnée se trouvant dans une cellule. À partir de cette
données
les fichiers sont renommés.



et sauvegardés fermés et tout ?

--
Cdt
Avatar
Gloops
Jacques a écrit, le 31/07/2008 21:40 :
bonjour vous deux

J'ai deux fonctions :

La première lit chacun des fichiers se trouvant dans un répertoire et je
récupère une donnée se trouvant dans une cellule. À partir de c ette données
les fichiers sont renommés.



Bonjour,

C'est le début du code, que tu as fourni ?
ça vaudrait probablement le coup de regarder la suite.

Notamment, situer la chronologie de trois actions :
- la sauvegarde du fichier
- sa fermeture
- son renommage.

Ah, pardon, je suis foncé tête baissé sur un problème au moment d e
renommer le fichier parce que je l'ai vu venir gros comme un pâté de
maisons, mais je réalise que ce n'est pas de ça qu'on parle.

Au fait, on parle de quoi ?
Elles sont longues, les fonctions ?



C'est lorsque j'exécute la deuxième fonction qui récupère toute s les données
du fichier que cela ne fonctionne plus. Le code est identique et pourta nt
lorsque je veux sélectionner une feuille, je reçois un message me d isant que
le serveur distant n'est pas accessible !!????

Je travaille sur mon disque C: !!!

Si j'exécute chaque fonction séparément pas de problème, si je les exécute
l'une après l'autre ca plante !! ??



Il y a deux fonctions, tu dis ?
Elles ont quoi comme arguments ?

A quel niveau est déclarée l'instance d'Excel ? Avec quelle portée ?
A quel niveau est-elle ouverte, fermée, libérée ?

Probablement, mêmes questions sur l'objet classeur (Workbook) et l'obje t
feuille (Worksheet).

Si l'application est ouverte par chaque fonction, y a-t-il un mécanisme
pour attendre de laisser à l'application le temps de se fermer avant de
se rouvrir ? Dans ce dernier cas, se demander si vraiment on a besoin
des fonctions séparément, ou si il ne serait pas judicieux de laisser
l'application Excel ouverte par l'une pour être utilisée par l'autre.
Auquel cas, bien sûr, bien réfléchir à ce qui pourrait faire que le
module appelant se ferme sans avoir fermé Excel, ce qui ne ferait
franchement pas propre et pourrait finir par saturer la mémoire.

Histoire d'être plus concis : et si tu nous présentais un peu tes deu x
fonctions, notamment leur contexte général d'utilisation et ce qu'ell es
font ?
Avatar
3stone
Salut,

"Jacques"
| J'ai deux fonctions :
|
| La première lit chacun des fichiers se trouvant dans un répertoire et je
| récupère une donnée se trouvant dans une cellule. À partir de cette données
| les fichiers sont renommés.


Si je comprends ce que tu écris:

- Tu ouvre Excel
- Tu lis des fichiers x, y, z
- Tu récupères le contenu d'une celulle
- Tu renomme les fichiers x, y, z
- Tu ferme excel

c'est cela ?

si oui, lire la valeur d'une celulle ne peut pas bloquer Excel,
cela vient alors d'ailleurs...

Essaie en faisant exécuter ton code pas à pas pour vérifier
la valeur des variables et le déroulement.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)