Ouverture d'un doc Excel sous Access ...

eddys -  
Cqqn Messages postés 964 Date d'inscription   Statut Membre Dernière intervention   -
Salut a tous !!! :o)

Voila la situtation :
- je developpe une ptite application sous Access en VBA
- dans cette appli, j'ouvre un doc Excel dans lequel j'affiche des données extraites de la base de données
(l'ouverture du doc se fait par le biais de l'instruction CreateObject)
- ensuite je rends l'appli Excel visible pour que l'utilisateur puisse lire les resultats ...

Donc jusque la tout va bien ...

Voila le probleme :
- l'utilisateur ferme Excel
- si par la suite on veut ouvrir n'importe quel doc Excel "à la main" via l'explorateur par exemple, Excel ne s'ouvre pas (il n'y a que la barre d'etat et la barre de titre d'Excel qui apparait et on ne peut que ferme la fenetre)
- le seul moyen pour pouvoir ouvrir a nouveau des documents Excel c'est de quitter l'appli sous Access ou (c'est la le plus etrange) de cliquer sur le bouton "STOP" de debogage de VBA sur mon appli Access !

Comme si mon appli ne s'etait pas fermee et qu'elle exploitait encore l'objet excel cree ... pourtant j'arrive bien a la fin de ma procedure et donc le programme rend bien la main ...

Qq'un aurait deja eu ce probleme ou saurait comment le resoudre ?

Merci d'avance pour toute aide :o)
A voir également:

3 réponses

blux Messages postés 27147 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
Salut,

as-tu essayé de mettre :

set LeNomDeLObjetExcel = nothing

à la fin de ta procédure.

en principe, ça libère le composant de la mémoire...
sinon, je crois que le process excel reste rattaché à son créateur.

A+ Blux            "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0
Cqqn Messages postés 964 Date d'inscription   Statut Membre Dernière intervention   21
 
Tout d'abord:
Depuis quelques temps déjà je parcours avec intérêt et admiration ce site. Je ne vais pasutiliser tous les compliments qui s'imposent puisqu'ils ont déjà été effectués.
Donc bravo et merci.

Mon problème:
Eh bien tout simplement le Set MonObjetExcel = Nothing
semble ne pas fonctionner, et je ne parviens pas à trouver l'erreur.
Je "travaille" sous ACCESS, pour cette partie de l'application, le but est de créer des courbes sur excel.
Donc avec ADODB je remplis une feuille Excel, puis j'ai transposé la macro de création de courbe dans le VBA ACCESS (il y a une procédure d'impression), puis j'écris:
MonObjetExcel.Application.Quit
MonObjetExcel = Nothing
Seulement je rencontre toujours le problème initialement cité par eddys.
J'espères que quelqu'un trouvera, car j'ai déjà essayé en utilisant le DAO, la commande
DoCmd.OutputTo acOutputTable, "MaTable", acFormatXLS...,true( et false).
Mais ADO me semble plus "propre".
En tous cas j'espère pouvoir à l'avenir aider avec la qualité de certains d'ici quelques années.

le respect, y'a que a de vrai!
0
eddys
 
Ca marche !!!

j pensais a une solution comme ca mais j cherchais une fonction qui s'appellerait genre "free" ... comme en C ...

Merci beaucoup !!!!!!!!
j commencais a m'arracher les cheveux sur ce probleme !!! :o)
ca me sauve parce que c'etait qd mm bien handicapant pour l'appli !!

Merci encore !
0
blux Messages postés 27147 Date d'inscription   Statut Modérateur Dernière intervention   3 362
 
de rien, on est là pour ça !

n'oublie pas de le faire avec tous les (gros) objets de ton programme, genre database, recordset...
sinon, un jour, y'a ton access qui part en vrille et tu sais pas pourquoi (débordement de pile...)

A+ Blux            "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"
0