Sauvegarder sur un .xls et pas sur un .xlsx VB2008 [Résolu]

cs_tino67 15 Messages postés lundi 9 février 2009Date d'inscription 23 mars 2015 Dernière intervention - 10 juin 2010 à 01:51 - Dernière réponse : cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention
- 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
Afficher la suite 

4 réponses

Répondre au sujet
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 10 juin 2010 à 10:45
+3
Utile
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)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Jack
cs_tino67 15 Messages postés lundi 9 février 2009Date d'inscription 23 mars 2015 Dernière intervention - 10 juin 2010 à 11:29
+3
Utile
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 !!!!!!!!
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_tino67
cs_tino67 15 Messages postés lundi 9 février 2009Date d'inscription 23 mars 2015 Dernière intervention - 10 juin 2010 à 11:18
0
Utile
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é.
Commenter la réponse de cs_tino67
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 10 juin 2010 à 11:33
0
Utile
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é.
Commenter la réponse de cs_Jack

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.