Fermer et enregistrer une feuille excel

Résolu
sephiroth27 Messages postés 34 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 31 octobre 2007 - 24 mai 2007 à 11:00
pseudoOM Messages postés 173 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 30 janvier 2009 - 6 juin 2007 à 10:02
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

pseudoOM Messages postés 173 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 30 janvier 2009 1
24 mai 2007 à 16:12
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
3
pseudoOM Messages postés 173 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 30 janvier 2009 1
6 juin 2007 à 10:02
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
1
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
24 mai 2007 à 11:10
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
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
24 mai 2007 à 11:19
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
24 mai 2007 à 11:25
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
0
pseudoOM Messages postés 173 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 30 janvier 2009 1
24 mai 2007 à 11:26
Je crois qu'il serait également judicieux de faire aussi ceci :
Set thisworkbook = Nothing
Set appxl = Nothing

pour libérer les ressources.

 pseudoOM
0
pseudoOM Messages postés 173 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 30 janvier 2009 1
24 mai 2007 à 11:26
Je crois qu'il serait également judicieux de faire aussi ceci :
Set thisworkbook = Nothing
Set appxl = Nothing

pour libérer les ressources.

 pseudoOM
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
24 mai 2007 à 11:27
En fait c'est surtout à cause du appxl.Workbooks.Add

 Drikce 06 (ForumOfficeEtVBA)
Si la réponse vous convient: Réponse acceptée.
0
cs_Nicko11 Messages postés 1141 Date d'inscription mercredi 7 mars 2007 Statut Membre Dernière intervention 19 septembre 2007 3
24 mai 2007 à 12:06
En effet, bonne suggestions pseudoOM.
0
sephiroth27 Messages postés 34 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 31 octobre 2007
24 mai 2007 à 13:54
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é!!!
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
24 mai 2007 à 13:58
Remplace par activeworkbook alors et cela devrai être bon.

 Drikce 06 (ForumOfficeEtVBA)
Si la réponse vous convient: Réponse acceptée.
0
sephiroth27 Messages postés 34 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 31 octobre 2007
24 mai 2007 à 15:36
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?
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
24 mai 2007 à 15:53
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.
0
sephiroth27 Messages postés 34 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 31 octobre 2007
4 juin 2007 à 10:04
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
0
sephiroth27 Messages postés 34 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 31 octobre 2007
4 juin 2007 à 10:08
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
0
Rejoignez-nous