Problème de sauvegarde d'un fichier Excel

adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009 - 8 mars 2007 à 10:25
 kamilia911 - 29 mai 2008 à 14:05
Bonjour à tous,
Je développe un projet en VB6
Je souhaite transférer le contenu d'un MSFlexGrid dans un fichier Excel. Jusque là tous va bien!!!
Mais au moment de sauvegarder mon fichier Excel j'ai l'erreur suivante:
   Erreur d'exécution '1004':
   la méthode de 'SaveAs' de l'objet '_Workbook' a échoué
Voici le bout de code:
   'Objet excel
   Dim XlApp As New Excel.Application
   'Objet Classeur
   Dim XlWorkBook As Excel.workbook   
   ...  
   'Enregistrer sous le classeur
   XlWorkBook.SaveAs ("C:\base données")
   ...

Merci d'avance
Coordialement

35 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 mars 2007 à 10:30
SAlut,

CEla ne fonctionne pas car ("C:\base données") n'est pas un chemin

IL faut preciser l'extension.

exmeple:
   XlWorkBook.SaveAs ("C:\base données.XLS")

@+: Ju£i?n
Pensez: Réponse acceptée
0
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009
8 mars 2007 à 10:46
Re-bonjour,
je te remercie de m'avoir répondu,
mais ça ne marche toujours pas

pourtant, j'ai bien rajouter l'extension mais j'ai toujours la même erreur.
'Enregistrer sous le classeur
XlWorkBook.SaveAs ("C:\Documents and Settings\stagiareit\nomfichier.XLS")
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 mars 2007 à 10:49
Salut,
Je suppose que C:\Documents and Settings\stagiareit\ est un répertoire valide?
Sinon il faudrait donne un pu plus de code, pour pouvoir mieux débugger

@+: Ju£i?n
Pensez: Réponse acceptée
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
8 mars 2007 à 10:54
Bonjour,

Je suppose que tu as cherché un peu et lu ceci :

http://support.microsoft.com/kb/257757/fr
0

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

Posez votre question
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
8 mars 2007 à 11:05
Salut et avec des minuscules .xls?

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
8 mars 2007 à 11:10
' ** Référence : Microsoft Excel 11.0 Library Objects ou équivalent
 
Dim
 xlApp        As Excel.Application
Dim xlBook      As Workbook




    Set
 xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open(sMonBook
)



    xlBook.SaveAs("C:\MonClasseur.xls")

    xlBook.Close True
    xlApp.Quit
    Set xlBook = Nothing
    Set xlApp = Nothing





 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
8 mars 2007 à 11:11
Précision sMonBook = Classeur à ouvrir

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
8 mars 2007 à 11:14
Dim xlApp        As Excel.Application
Dim xlBook      As Workbook

    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Open("C:\test.xls")

    xlBook.SaveAs ("C:\test1.xls")

    xlBook.Close True
    xlApp.Quit
    Set xlBook = Nothing
    Set xlApp = Nothing,

----

(Coloration syntaxique automatique par Kenji)




Cela fonctionne sans aucun problème

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009
8 mars 2007 à 11:31
Je vous remercie pour vos réponses mais ça ne marche toujours pas.
J'ai tout d'abord essayé de mettre en minuscule, ça ne change rien
J'ai essayé de faire ce que tu m'as proposé Drikce 06 et ça n'a pas l'air de fonctionner ou c'est moi qui n'est peu être pas tout bien fait
Je te montre le code:

Private Sub Command1_Click()


   'Objet excel
   Dim XlApp As New Excel.Application
   'Objet Classeur
   Dim XlWorkBook As Excel.workbook
   
   Set XlApp = CreateObject("Excel.Application")


   XlApp.Visible = True
   colHeader = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y")
   'Ouvre un classeur neuf
   Set XlWorkBook = XlApp.Workbooks.Open("E:\base données\Code\MonFichier.xls")
   '[...les mofid => Objets Worksheets... Ranges]
   With grd_visu
       For intRow = 0 To .Rows - 1
           For intCol = 0 To .Cols - 1
               XlApp.Range(colHeader(intCol) & (intRow + 1)).BorderAround Color:=vbBlack
               XlApp.Range(colHeader(intCol) & (intRow + 1)) = .TextMatrix(intRow, intCol)
           Next intCol
       Next intRow
   End With
   'Enregistrer sous le classeur
   XlWorkBook.SaveAs ("E:\base données\Code\MonFichier.xls")
   'Sauvegarde le classeur
   XlWorkBook.Close (True)
   'Quitte l'application
   XlApp.Quit
   'Destruction des objets
   Set XlApp = Nothing
   Set XlWorkBook = Nothing


End Sub

enfin pour information, ma référence :
   Microsoft Excel 2007 ObjectLibrary


Merci d'avance




   
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
8 mars 2007 à 11:41
La seule différence que je vois c'est la déclaration du classeur, mais bon je ne pense pas que ce soit ça, mais on ne sait jamais!







Sinon essaye avec une référence antérieure!

Après test mon code avec un classeur virege cala fonctionne!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 mars 2007 à 11:44
Salut,
Premiere chose, si ton classeur ne change pas de nom, il est inutilse d'utiliser SaveAs
L'instruction XlWorkBook.Close (True) devrait suffire.
Ensuite peu être (Mais rien n'est moins sûr) que Excel n'aime pas que tu appelle ton objet XlWorkBook , vu que c'est une constante déjà utilisée par Excel

@+: Ju£i?n
Pensez: Réponse acceptée
0
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009
8 mars 2007 à 11:45
ok. je vais essayé avec un classeur vierge mais pour sauvegarder je mets juste alors


XlWorkBook.Save

Mais a quel endroit du disque se sauvegarde le fichier?

merci d'avance
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 mars 2007 à 11:48
Re.
Si tu ne changes pas de nom l'instruction XlWorkBook.Close (True) devrait suffire, le TRUE veut dire sauvegarder les modifications.
Et c'est le classeur qui est sauvegarder donc il est sauvegarder au même endroit qu il a été ouvert

@+: Ju£i?n
Pensez: Réponse acceptée
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
8 mars 2007 à 11:48
Le chemin est le même donc il se sauve à l'endroit où tu l'as ouvert tout simplement avec Book.Close comme l'a dit jrivet. SaveAs sert uniquement à changer le nom du fichier ou le chemin!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
8 mars 2007 à 11:49
C'est comme dans n'importe quel prog la différence entre enregistrer sous et enregistrer de même pour close quand tu quitte une appli il te demande d'enregistrer les modif ou non avec .Close = True cela enregistre les modifs!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009
8 mars 2007 à 11:59
Private Sub Command1_Click()


   'Objet excel
   Dim xlApp As New Excel.Application
   'Objet Classeur
   Dim XlBook As workbook
   Set xlApp = CreateObject("Excel.Application")


   xlApp.Visible = True
   colHeader = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y")
   'Ouvre un classeur neuf
   Set XlBook = xlApp.Workbooks.Open("E:\base données\Code\MonFichier.xls")
   'Set XlBook = xlApp.Workbooks.Add
   ' [...les mofid => Objets Worksheets... Ranges]
   With grd_visu
       For intRow = 0 To .Rows - 1
           For intCol = 0 To .Cols - 1
               xlApp.Range(colHeader(intCol) & (intRow + 1)).BorderAround Color:=vbBlack
               xlApp.Range(colHeader(intCol) & (intRow + 1)) = .TextMatrix(intRow, intCol)
           Next intCol
       Next intRow
   End With
   'Sauvegarde le classeur
   XlBook.Close (True)
   'Quitte l'application
   xlApp.Quit
   'Destruction des objets
   Set xlApp = Nothing
   Set XlBook = Nothing


   End Sub

alors ça marche presque!!!
ça m'ouvre le classeur vide MonFichier.xls
ça copie bien les données a l'intérieur
Le programme s'arrête sans erreur sauf que lorsque je vais voir mon fichier,
il n'y a rien dedans
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
8 mars 2007 à 12:01
Salut,
Si tu essayer de remplacer xlApp.Range(... Par XlWorkBook.Range(...

@+: Ju£i?n
Pensez: Réponse acceptée
0
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009
8 mars 2007 à 12:06
ça ne marche pas.
XlBook n'a pas cette fonction définie
0
adrienr11vdv Messages postés 99 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 16 avril 2009
8 mars 2007 à 12:18
Private Sub Command1_Click()


   'Objet excel
   Dim xlApp As New Excel.Application
   'Objet Classeur
   Dim XlBook As workbook
   Set xlApp = CreateObject("Excel.Application")


   xlApp.Visible = True
   colHeader = Array("A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y")
   'Ouvre un classeur neuf
   Set XlBook = xlApp.Workbooks.Add
   '[...les mofid => Objets Worksheets... Ranges]
   With grd_visu
       For intRow = 0 To .Rows - 1
           For intCol = 0 To .Cols - 1
               xlApp.Range(colHeader(intCol) & (intRow + 1)).BorderAround Color:=vbBlack
               xlApp.Range(colHeader(intCol) & (intRow + 1)) = .TextMatrix(intRow, intCol)
           Next intCol
       Next intRow
   End With

   'Sauvegarde le classeur
   XlBook.Close (True)
   'Quitte l'application
   xlApp.Quit
   'Destruction des objets
   Set xlApp = Nothing
   Set XlBook = Nothing


End Sub

Lorsque j'execute se code ça marche impeccable.
Le seul petit problème est que je ne trouve pas le fichier sauver
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
8 mars 2007 à 13:04
Set XlBook = xlApp.Workbooks.Add
Tu as ajouté un classeur tu n'en as pas ouvert un mets Set XlBook = xlApp.Workbooks.Open("E:\base données\Code\MonFichier.xls")

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
Rejoignez-nous