SaveFileDialogue pour fichier excel n'enregistre pas (VB2008) [Résolu]

Messages postés
15
Date d'inscription
lundi 9 février 2009
Dernière intervention
23 mars 2015
- - Dernière réponse : cs_tino67
Messages postés
15
Date d'inscription
lundi 9 février 2009
Dernière intervention
23 mars 2015
- 26 mai 2010 à 11:54
Bonjour, alors voilà je suis sous VB 2008 et je viens d'ouvrir un document excel (xls) de créer un classeur et d'écrire sur la 1ère page du classeur avec VB2008.
Maintenant je veux l'enregistrer quand je click sur Boutton1 à l'aide de savefiledialog(),
mais je n'arrive pas, la fonction classeur.SaveAs( avec le chemin du savefiledialogue).
ça créer la feuille mais sans enregistrer.
que faut-il mettre exactement dans le If (myStream IsNot Nothing) Then end if
pour que ça marche ????


Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim myStream As System.IO.Stream
Dim saveFileDialog1 As New SaveFileDialog()

saveFileDialog1.Filter = "Fichier excel (*.xls)|*.xls"
saveFileDialog1.FilterIndex = 2
saveFileDialog1.RestoreDirectory = True

If saveFileDialog1.ShowDialog() = DialogResult.OK Then
myStream = saveFileDialog1.OpenFile()
If (myStream IsNot Nothing) Then
PB ' Code to write the Stream goes here.
PB xlsclasseur.SaveAs(myStream)
myStream.Close()
End If
xls.Application.Quit()
xls = Nothing
End If
MsgBox("FIN DE L'EXPORTATION", vbOKOnly + vbInformation, "GESTION DES STATISTIQUES")

End Sub


MERCIIIIIII
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
5805
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
15 février 2019
79
3
Merci
Bonjour, Essayez cela:

Public Class Form1
    Dim chemin As String
    Dim oXL As Object
    Dim oBook As Object
    Dim oSheet As Object
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim saveFileDialog1 As New SaveFileDialog()
        oXL = CreateObject("Excel.Application")
        oBook = oXL.Workbooks.Add ' Ajout d'un classeur
        oSheet = oBook.Worksheets(1)
        saveFileDialog1.Filter = "Fichier excel (*.xls)|*.xls"
        saveFileDialog1.FilterIndex = 2
        saveFileDialog1.RestoreDirectory = True


        If saveFileDialog1.ShowDialog() = Windows.Forms.DialogResult.OK Then
            chemin = saveFileDialog1.FileName
        End If
       'Renommer une feuille (exemple pour vérifier si je suis bien au chemin voulu) 
        oXL.ActiveWorkbook.Worksheets("Feuil1").Name = "NouveauNom"


        'Enregistrer sous le classeur 
        oXL.ActiveWorkbook.SaveAs(chemin)
        oXL.Quit() ' Ferme le processus
    End Sub
End Class

@+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 117 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Le Pivert
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
73
0
Merci
Salut
Pourquoi, après avoir choisi le fichier, ouvres-tu un ce fichier ?
Non, il suffit de récupérer son chemin et nom et de le fournir à Excel :
Je pense que cela devrait suffire :
If saveFileDialog1.ShowDialog() = DialogResult.OK Then
    xlsclasseur.SaveAs(saveFileDialog1.OpenFile())
End If 
En supposant que saveFileDialog1.OpenFile() retourne le chemin et nom du fichier (aucune idée en .Net)

Vala
Jack, 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)
Commenter la réponse de cs_Jack
Messages postés
15
Date d'inscription
lundi 9 février 2009
Dernière intervention
23 mars 2015
0
Merci
Bonjour, merci de ton éclaircissement.
Mais en faite j'ai toujours un problème, le saveas ne marche pas dans mon savefiledialog1.openfile().

Donc en gros voilà ce que je veux faire, c'est écrire sur un fichier excel ça ça va et ensuite l'enregistrer à l'endroit choisi par l'utilisateur (à l'aide de la fenêtre d'enregistrement standard, savefiledialog)

Merci
Commenter la réponse de cs_tino67
Messages postés
15
Date d'inscription
lundi 9 février 2009
Dernière intervention
23 mars 2015
0
Merci
Voilà je suis toujours bloqué
voici une autre solution mais ça marche toujours pas.

Private Sub Button1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim saveFileDialog1 As New SaveFileDialog()
saveFileDialog1.Filter = "Fichier excel (*.xls)|*.xls"
saveFileDialog1.FilterIndex = 2
saveFileDialog1.RestoreDirectory = True


If saveFileDialog1.ShowDialog() = DialogResult.OK Then
chemin = saveFileDialog1.FileName
End If
Label1.Text = chemin

appxls = New Microsoft.Office.Interop.Excel.Application
appxls.Visible = True

'Ajouter un nouveau classeur
appxls.Workbooks.Add()

'Renommer une feuille (exemple pour vérifier si je suis bien au chemin voulu)
appxls.ActiveWorkbook.Worksheets("Feuil1").Name = "NouveauNom"


'Enregistrer sous le classeur
appxls.ActiveWorkbook.SaveAs(chemin)

End Sub

Je rappelle ce que j'aimerais, j'ai des données que j'aimerais enregistrer dans un nouveaux document excel à l'adresse choisi par l'utilisateur avec la fenêtre savefiledialog.
Commenter la réponse de cs_tino67
Messages postés
15
Date d'inscription
lundi 9 février 2009
Dernière intervention
23 mars 2015
0
Merci
Merci beaucoup c'est exactement ce que je voulais faire !!!
ça faisait 2 jours que je tentais des trucs mais sans résultats.
Juste il faut mettre tout la partie de modif' et de save dans la boucle if sinon ça beug quand on clic sur fermer ou annuler, car le chemin n'as pas de valeur dans ce cas là.
Commenter la réponse de cs_tino67

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.