Sauvegarder sur un .xls et pas sur un .xlsx VB2008

Résolu
cs_tino67 Messages postés 15 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 23 mars 2015 - 10 juin 2010 à 01:51
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 10 juin 2010 à 11:33
Bonjour, voici mon soucis
j'ouvre un fichier excel, que j'enregistre en format xls avec ( saveFichierExcel.Filter <gras>"Fichiers Excel (*.xls)|*.xls" celà marche mais lorsque j'ouvre le fichier à partir de Excel j'ai ce message " Le format du fichier "bidul.xls que vous tentez d'ouvrir est différent de celui spécifier par l'extension du fichier...vérifier si le fichier est endommagé..." avec excel 2007 ça marche quand je clic sur continuer mais avec excel XP j'ai un fichier avec plein de code bizarre. Je pense qu'il est en format xlsx car en plus quand je remplace la ligne précédente par saveFichierExcel.Filter</gras> "Fichiers Excel (*.xlsx)|*.xlsx" je n'ai plus ce problème sauf que je veux en format .xls

voici mon code, je suis sur VB2008 et j'ai ajouté en référence Microsoft Excel 12.0 à mon projet.
MERCI D'AVANCE.

savepointage() 'sauve résultat du pointage dans un ecxel
Dim chemin As String
Dim appxls As Microsoft.Office.Interop.Excel.Application
Dim Book As Microsoft.Office.Interop.Excel.Workbook
Dim saveFichierExcel As New SaveFileDialog()
Dim tourmax As Integer

saveFichierExcel.Title = "Sauvegarder dans un fichier Excel"
saveFichierExcel.Filter = "Fichiers Excel (*.xls)|*.xls"
saveFichierExcel.FilterIndex = 1
saveFichierExcel.RestoreDirectory = True
saveFichierExcel.CheckPathExists = True
saveFichierExcel.AddExtension = True

If saveFichierExcel.ShowDialog() = Windows.Forms.DialogResult.OK Then
appxls = New Microsoft.Office.Interop.Excel.Application
Book = appxls.Workbooks.Add ' Ajout d'un classeur
chemin = saveFichierExcel.FileName

"ecriture dans le fichier


'Enregistrer sous le classeur
Try
appxls.ActiveWorkbook.SaveAs(chemin)
Catch ex As Exception
MessageBox.Show("Impossible d'enregistrer : vérifiez que le fichier Excel n'est pas déjà ouvert " & ex.Message)
End Try

Else
Exit Sub
End If

Book.Close(True, , )
appxls.Quit()
Book = Nothing
appxls = Nothing

4 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 juin 2010 à 10:45
Salut
Comme on le répète à longueur de temps : "enregistre une macro pendant que tu fais la manip à la main" et tu auras le code exact à utiliser :
Dans ton cas, tu demandes à l'utilisateur de choisir un fichier XLS.
Oui, mais l'extension d'un fichier ne présume pas de son contenu.
En faisant un simple SaveAs ne suffit pas puisque le format d'enregistrement par défaut est XLSX.
    ActiveWorkbook.SaveAs Filename:= "C:\Users\Jack\Desktop\Classeur1.xls", _
        FileFormat:=xlExcel8, Password:="", WriteResPassword:="", _
        ReadOnlyRecommended:=False, CreateBackup:=False

C'est l'option FileFormat:=xlExcel8 qui définit réellement le type du fichier

Vala
Jack, =fr MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_tino67 Messages postés 15 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 23 mars 2015
10 juin 2010 à 11:29
C'est bon je pense avoir trouvé il faut que je mette FileFormat:=Microsoft.Office.Interop.Excel.XlFileFormat.xlExcel8 et pas seulement FileFormat:=xlExcel8

Encore merci beaucoup !!!!!!!!
3
cs_tino67 Messages postés 15 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 23 mars 2015
10 juin 2010 à 11:18
Merci, tu viens de me forcer à apprendre comment faire un macro sous excel !! Je n'avais jamais vraiment osé en utiliser mais en fait avec le "enregistre une macro pendant que tu fais la manip à la main" c'est plutôt ludique.

Moi aussi excel me donne bien le même code que toi pour le fileformat donc xlExcel8 mais quand je le mets dans mon projet sous VB 2008 il me met "Le nom 'xlExcel8'" n'est pas déclaré.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
10 juin 2010 à 11:33
En effet, cette macro créée sous Excel suppose que les constantes sont connues, ce qui n'est pas le cas dans un autre environnement.
Bien joué.
0
Rejoignez-nous