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

Signaler
Messages postés
15
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
23 mars 2015
-
Messages postés
15
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
23 mars 2015
-
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

5 réponses

Messages postés
6992
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
28 octobre 2020
114
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

@+
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
70
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)
Messages postés
15
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
23 mars 2015

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
Messages postés
15
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
23 mars 2015

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.
Messages postés
15
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
23 mars 2015

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à.