SaveFileDialogue pour fichier excel n'enregistre pas (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 - 24 mai 2010 à 01:23
cs_tino67 Messages postés 15 Date d'inscription lundi 9 février 2009 Statut Membre 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

5 réponses

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
25 mai 2010 à 08:32
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

@+
3
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
24 mai 2010 à 03:15
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)
0
cs_tino67 Messages postés 15 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 23 mars 2015
24 mai 2010 à 18:08
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
0
cs_tino67 Messages postés 15 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 23 mars 2015
25 mai 2010 à 01:04
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.
0

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

Posez votre question
cs_tino67 Messages postés 15 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 23 mars 2015
26 mai 2010 à 11:54
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à.
0
Rejoignez-nous