VB6 : problème d'enregistrement et fermeture d'un classeur Excel après modif

cs_Pixel Messages postés 17 Date d'inscription samedi 23 février 2002 Statut Membre Dernière intervention 24 juin 2011 - 22 sept. 2009 à 16:28
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 - 22 sept. 2009 à 20:06
bonjour à tous

j'ai un problème avec mon code lorsque je veux fermer un fichier excel...


'=============================================
Dim appExcel As Excel.Application
Dim wBookExcel As Excel.Workbook
Dim wSheetExcel As Excel.Worksheet

'Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")

'Ouverture d'un fichier Excel
Set wBookExcel = appExcel.Workbooks.Open(Rép & "filesource.xls")

'ouvre la première feuille
Set wSheetExcel = wBookExcel.ActiveSheet

With wSheetExcel
'là je fais toutes mes modif dans la feuille du fichier filesource.xls...

'je définis le nouveau nom du fichier à enregistrer ...
newFileNameOF = "newname.xls"

'je l'enregistre avec le nouveau nom...
ActiveWorkbook.SaveAs Filename:=Rép_OF & "" & newFileNameOF , FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False

'et après je veux tout fermer...
Call wBookExcel.Close(False) 'pour fermer sans modifier le fichier source

'et on vide la mémoire
Set wSheetExcel = Nothing
Set wBookExcel = Nothing
Set appExcel = Nothing
appExcel.Quit 'Fermeture de l'application Excel



Mon problème et que çà plante à la dernière ligne "appExcel.quit"
et lorsque je supprome cette ligne, et que le traitement se fait en boucle, lors de la 2ème tentative d'enregistrement du fichier avec un nouveau nom, çà plante à la ligne "ActiveWorkbook.SaveAs Filename:=Rép_OF & "" & newFileNameOF , FileFormat:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False"

et là, çà fait 2 jours que je cherche, et je trouve rien...

Je pense qu'il y a un problème dans mon code, mais je ne trouva pas l'erreur.
si qq1 pouvait m'aider, ce serait sympa
merci
A voir également:

3 réponses

pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
22 sept. 2009 à 20:00
pour ta premiere question il me semble logique que ça plante puisque tu suprimme l'objet avant de fermer l'application

Set appExcel = Nothing
appExcel.Quit 'Fermeture de l'application Excel

il faut donc inverser ces deux lignes.

pour la deuxieme il faudra voir quand le premiere sera réglée car à mon avis elles sont liées

si c'est la solution, penser : REPONSE ACCEPTEE
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
22 sept. 2009 à 20:05
Bonjour,

Pour le premier problème, tu doit mettre appExcel.Quit avant Set appExcel = Nothing. C'est logique car si tu affecte Nothing à l'objet appExcel, ce n'est plus un objet Excel.application et tu ne peux donc plus faire Quit.

Pour le deuxième, désolé mais je n'ai pas bien suivi. Peux-tu préciser le texte de l'erreur au moment où ça plante ?

Peux-tu préciser "Quand le traitement se fait en boucle" ? Comment utilise-tu ce code ? Dans une procédure que tu lance en boucle ? Si oui, as-t-elle des parametres ou il n'y à que des valeurs en dur dans le code ? Comme "newname.xls" par exemple.
0
cs_Ayr Messages postés 221 Date d'inscription mercredi 9 avril 2003 Statut Membre Dernière intervention 13 décembre 2009 2
22 sept. 2009 à 20:06
Ha ben grillé
Je crois que tu es arrivé pile poil, pile_poil...
(Non c'était pas facile !)
0
Rejoignez-nous