VB6 + Excel

[Résolu]
Signaler
Messages postés
123
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
25 juillet 2007
-
Messages postés
123
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
25 juillet 2007
-
Quand je lance 2 fois de suite une generation de fichier excel, ca plante :

Au début :
Set AppExcel = CreateObject("Excel.Application")
AppExcel.Visible = False
AppExcel.AlertBeforeOverwriting = False
AppExcel.DisplayAlerts = False
Set FichierExcel = AppExcel.Workbooks.Add

Puis mon traitement ...

A la fin :
FichierExcel.Close True, Txt1 & "" & Left(Txt2, Len(Txt2) - 4) & "_" & Rx0!Libelle & ".xls"
Set FichierExcel = Nothing
AppExcel.Quit
Set AppExcel = Nothing

Si je retourne à "Au début", ca finit par planter. Quelqu'un pourrait-il m'expliquer pourquoi ? merc d'acance.

8 réponses

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
16
Salut pcvesoul, si j'essaie le dernier bout de code que tu as posté, chez moi ça ne plante pas, par contre le fichier n'est pas créé s'il n'existe pas.


Pour que ça fonctionne, j'ai été obligé de modifier comme ça :


Set AppExcel = CreateObject("Excel.Application")
AppExcel.Visible = False
AppExcel.AlertBeforeOverwriting = False
AppExcel.DisplayAlerts = False


Set FichierExcel = AppExcel.Workbooks.Add
'traitement

FichierExcel.SaveAs Txt1 & "" & Left(Txt2, Len(Txt2) - 4) & "_" & Rx0!Libelle & ".xls", , , , , , , True
FichierExcel.Close
Set FichierExcel = Nothing


AppExcel.Quit
Set AppExcel = Nothing

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 112 internautes nous ont dit merci ce mois-ci

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
C'est quoi ton message d'erreur ?




Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
salut
Set FichierExcel = Nothing
AppExcel.Quit
inverse ces 2 lignes
PCPT
Messages postés
123
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
25 juillet 2007
1
Je ne peux plus car j'ai changé l'ordre de traitement :

Au début :
Set AppExcel = CreateObject("Excel.Application")
AppExcel.Visible = False
AppExcel.AlertBeforeOverwriting = False
AppExcel.DisplayAlerts = False

Pour chaque fichier excel :
Set FichierExcel = AppExcel.Workbooks.Add
Puis mon traitement ...
FichierExcel.Close True, Txt1 & "" & Left(Txt2, Len(Txt2) - 4) & "_" & Rx0!Libelle & ".xls"
Set FichierExcel = Nothing

A la fin :
AppExcel.Quit
Set AppExcel = Nothing

Donc ca marche pour chaque fichier excel, mais apres avoir donc fermer l'application excel, si je relance le meme traitement, ca plante des le 1er fichier ?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
salut,
alors ne fait ton Set AppExcel = Nothing qu'à la fermeture de ton appli()
PCPT
Messages postés
123
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
25 juillet 2007
1
Je le fais quand tout le traitement est terminé et ca plante quand je recommence. Si je ne le fais pas, ca plante aussi, et si je le fais a la fermeture de l'application, c'est sur que ca marchera puisque je serai sorti du prog...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
je dis à la fermeture, parceque tu détruis l'instance que tu ré-utilises avant de la re-créer.
tu n'as donc pas forcément besoin de la détruire....
PCPT
Messages postés
123
Date d'inscription
vendredi 21 janvier 2005
Statut
Membre
Dernière intervention
25 juillet 2007
1
Moi par contre je n'avais pas de problème de création ou d'update de fichier mais je vais quand même tenir compte de ta remarque car cela peut se produire chez un client.

Merci et @+