Fermer et enregistrer une feuille excel

Résolu
Signaler
Messages postés
34
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
31 octobre 2007
-
Messages postés
173
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
30 janvier 2009
-
bonjours dans mon prog sous vb6 j'ai ce code :

Dim appxl As Excel.Application
________________________



Public Sub extract()




Set appxl = New Excel.Application
'ouverture du fichier excel
appxl.Visible = True
'nouveau classeur
appxl.Workbooks.Add




[mon code d'export de données]




appxl.Quit




End Sub

Mais quand je ferme excel il me demande si je veut enregistrer et où.

Je voudrai donc savoir quel code il faut que je mette pour que sa ferme et enregistre dans un lieu spécifique.

merci d'avance.

15 réponses

Messages postés
173
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
30 janvier 2009

moi je fait comme ça :

Set xl_App = CreateObject("Excel.Application")
Set xl_Book = xl_App.Workbooks.Open("c:" + str_SFichier)

[le code pour remplir la feuille]

xl_Book.Save
xl_Book.Close savechanges:=False
Set xl_Book = Nothing
Set xl_App = Nothing

Pour cet exemple ma feuille Excel existe déjà et je l'ouvre pour la remplir. Ensuite pour mes besoins je la déplace dans un autre répertoire quand elle est complétée.

FileCopy "c:" + str_SFichier, "c:" + str_DFichier

Sinon dans un autre programme je fais comme ça (et là la feuille n'existe pas avant de la créer)

Set excel_ElevesCours = CreateObject("excel.Application")
excel_ElevesCours.Visible = True --> facultatif c'est juste pour que la feuille Excel s'affiche à l'écran
excel_ElevesCours.Workbooks.Add
Set Feuille_Crs = excel_ElevesCours.Worksheets.Add

[Code pour remplir la feuille]

excel_ElevesCours.ActiveWorkbook.SaveAs (str_NomFicXls) 'Variable qui contient le chemin d'enregistrement (ex : c:\Doc Excel\Fichier.xls
excel_ElevesCours.Quit

Set Feuille_Crs = Nothing
Set excel_ElevesCours = Nothing

 pseudoOM
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Salut, inspire toi de ce code,

For Each w In Workbooks
    If w.Name <> ThisWorkbook.Name Then
        w.Close savechanges:=True
    End If
Next w
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Salut

Public Sub extract()




Set appxl = New Excel.Application
'ouverture du fichier excel
appxl.Visible = True
'nouveau classeur
appxl.Workbooks.Add






[mon code d'export de données]






thisworkbook.SaveAs("C:\classeur.xls")
thisworkbook.close savechanges:= true
appxl.Quit




End Sub





 Drikce 06 (ForumOfficeEtVBA)
Si la réponse vous convient: Réponse acceptée.
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Bien sur, c'est le commentaire qui m'a perturbé,
'ouverture du fichier excel

 Alors qu'en fait, j'aurais du me fier à ca,
Set appxl = New Excel.Application

Ca n'ouvre pas un fichier .xls mais Excel tout court.

Bien joué Drikce
Messages postés
173
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
30 janvier 2009

Je crois qu'il serait également judicieux de faire aussi ceci :
Set thisworkbook = Nothing
Set appxl = Nothing

pour libérer les ressources.

 pseudoOM
Messages postés
173
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
30 janvier 2009

Je crois qu'il serait également judicieux de faire aussi ceci :
Set thisworkbook = Nothing
Set appxl = Nothing

pour libérer les ressources.

 pseudoOM
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
En fait c'est surtout à cause du appxl.Workbooks.Add

 Drikce 06 (ForumOfficeEtVBA)
Si la réponse vous convient: Réponse acceptée.
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
En effet, bonne suggestions pseudoOM.
Messages postés
34
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
31 octobre 2007

Alors merci a tous,
 Drikce06 j'ai mis en place ton morceau de code

thisworkbook.SaveAs("C:\Test.xls")
thisworkbook.close savechanges:= true

mais j'ai une erreur des la ligne "SaveAs", ( la methode 'thisworkbook' de l'objet'_global' a échoué)!!!!!

heu sa veut dire quoi sa?

 merci pour t'as suggestions pseudoOM

PS: je n'est pas de fichier de départ Excel peut être que l'erreur vient de la mais j'ai essayé de mêtre un fichier excel sous c: qui s'appelé test.xls mais sa na rien changé!!!
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Remplace par activeworkbook alors et cela devrai être bon.

 Drikce 06 (ForumOfficeEtVBA)
Si la réponse vous convient: Réponse acceptée.
Messages postés
34
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
31 octobre 2007

bon mon code ressemble a sa maintenant:

Public Sub extract()


Set appxl = New Excel.Application
'ouverture du fichier excel
appxl.Visible = True
'nouveau classeur
appxl.Workbooks.Add






[mon code d'export de données]






ActiveWorkBook.SaveAs("C:\classeur.xls")
ActiveWorkBook.close savechanges= true
appxl.Quit



set appxl = Nothing
End Sub




si je fait appel une deuxieme fois à cette fonction le message suivant s'affiche

" Variable objet ou variable bloc With non définie " a la ligne saveAs 

Qu'est ce qui m'veut lui aussi, il veut rentrer en confli avec moi?
Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Qu'est ce que tu as comme code là-dedans
[mon code d'export de données]




Sinon essaye:
Public Sub extract()
Set appxl = New Excel.Application
'ouverture du fichier excel
appxl.Visible = True
'nouveau classeur
appxl.Workbooks.Add

ActiveWorkBook.SaveAs("C:\classeur.xls")

[mon code d'export de données]

WorkBooks("classeur.xls").close savechanges= true
appxl.Quit

set appxl = Nothing
End Sub

 Drikce 06 (ForumOfficeEtVBA)
Si la réponse vous convient: Réponse acceptée.
Messages postés
34
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
31 octobre 2007

Merci bien la deuxiéme solution est celle qu'il me fallait, comme je n'avait pas de fichier excel de créer le code fonctionne a merveille

Encore merci
Messages postés
34
Date d'inscription
vendredi 28 avril 2006
Statut
Membre
Dernière intervention
31 octobre 2007

Merci bien PseudoOM, la deuxiéme solution est celle qu'il me fallait, comme je n'avait pas de fichier excel de créer le code fonctionne a merveille

Encore merci
Messages postés
173
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
30 janvier 2009

Je suis content d'avoir pu t'aider et que cela fonctionne. Ce n'est qu'un juste retour des choses car moi aussi de temps en temps j'ai besoin d'aide et je suis bien heureux de pouvoir la trouver ici.
Bonne continuation !

pseudoOM