none
sauvegarder une listebox RRS feed

Réponses

  • Bonjour,

     

    Essayer le code suivant :

            Dim cheminFichier = "xxxx.txt" 'Le nom et chemin que vous désirez attribuer à votre fichier.
            Dim items(Me.ListBox1.Items.Count - 1) As Object
            Me.ListBox1.Items.CopyTo(items, 0)
            System.IO.File.WriteAllLines(cheminFichier, items.Select(Function(item) item.ToString()))
    


    Le code suppose que votre ListBox s'appelle ListBox1.

    Si vous voulez que les données ne soient pas écrasées, utiliser System.IO.File.AppendAllLines au lieu de System.IO.File.WriteAllLines.

     

    Cordialement.

    • Proposé comme réponse TroxsaEditor mardi 13 décembre 2011 15:54
    • Marqué comme réponse Michel K dimanche 18 décembre 2011 18:22
    mardi 13 décembre 2011 13:09
    Auteur de réponse
  • Bonsoir Nicolas,

    Pour ouvrir une boite de dialogue, il existe la classe SaveFileDialog dont voici un exemple d'utilisation :

            Dim cheminfichier As String = ""
            Dim sfd As New SaveFileDialog
            sfd.Filter = "Fichiers textes (*.txt)|*.txt" 'le filtre sur les extensions des fichiers
            sfd.InitialDirectory = "C:\" 'repertoire initial
            If sfd.ShowDialog = DialogResult.OK Then 'si l'utilisateur valide un fichier pour la sauvegarde
                cheminfichier = sfd.FileName 'sfd.FileName contient le chemin du fichier sélectionné
            End If
    

    Pour sauvegarder l'état d'une listbox, il faut enregistrer les données soit sous forme de fichier de configuration qu'il faudra lire à l'ouverture du programme, sois via les paramètres de l'application.

    Voici un court exemple :

    'sauvegarde des éléments (après avoir crée element1 etc)       
     My.Settings.element1 = "premier item de la liste box ici"
            '...
     My.Settings.Save() 'on sauvegarde
    


    Et pour lire les paramètres afin de remplir automatiquement la listbox :

            ListBox1.Items.Add(My.Settings.element1)
    


    A l'avenir, séparez les threads afin d'avoir un thread = un problème.

    Merci et bonne soirée.

     


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact
    dimanche 18 décembre 2011 18:22

Toutes les réponses

  • Bonjour,

     

    Essayer le code suivant :

            Dim cheminFichier = "xxxx.txt" 'Le nom et chemin que vous désirez attribuer à votre fichier.
            Dim items(Me.ListBox1.Items.Count - 1) As Object
            Me.ListBox1.Items.CopyTo(items, 0)
            System.IO.File.WriteAllLines(cheminFichier, items.Select(Function(item) item.ToString()))
    


    Le code suppose que votre ListBox s'appelle ListBox1.

    Si vous voulez que les données ne soient pas écrasées, utiliser System.IO.File.AppendAllLines au lieu de System.IO.File.WriteAllLines.

     

    Cordialement.

    • Proposé comme réponse TroxsaEditor mardi 13 décembre 2011 15:54
    • Marqué comme réponse Michel K dimanche 18 décembre 2011 18:22
    mardi 13 décembre 2011 13:09
    Auteur de réponse
  • Bonjour, Nicolas,

     

    Est-ce que la solution de Mourad réponde à vos besoins ? Merci de partager avec nous les résultats, afin que d'autres personnes avec le même problème puissent profiter de cette solution.

     

    Cordialement,

     

    Cipri


    Suivez MSDN sur Twitter   Suivez MSDN sur Facebook


    Ciprian DUDUIALA, MSFT  
    •Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.

    jeudi 15 décembre 2011 10:08
  • Bonjour oui merci
    vendredi 16 décembre 2011 09:18
  • Bonjour

    oui Merci par contre j'aurai une autre question car en faite je voudrai pourvoir choisir le chemin moi meme c'est à dire qu'une boîte de dialogue s'ouvre et que je peut choisir ?

    Ensuite si il était possible de sauvegarder ces a dire quand je quitte le programme et que je le réouvre que ma listebox reste avec les élément rentré au paravent ?

    Cordialement

    Nicolas

     

    vendredi 16 décembre 2011 09:20
  • Bonsoir Nicolas,

    Pour ouvrir une boite de dialogue, il existe la classe SaveFileDialog dont voici un exemple d'utilisation :

            Dim cheminfichier As String = ""
            Dim sfd As New SaveFileDialog
            sfd.Filter = "Fichiers textes (*.txt)|*.txt" 'le filtre sur les extensions des fichiers
            sfd.InitialDirectory = "C:\" 'repertoire initial
            If sfd.ShowDialog = DialogResult.OK Then 'si l'utilisateur valide un fichier pour la sauvegarde
                cheminfichier = sfd.FileName 'sfd.FileName contient le chemin du fichier sélectionné
            End If
    

    Pour sauvegarder l'état d'une listbox, il faut enregistrer les données soit sous forme de fichier de configuration qu'il faudra lire à l'ouverture du programme, sois via les paramètres de l'application.

    Voici un court exemple :

    'sauvegarde des éléments (après avoir crée element1 etc)       
     My.Settings.element1 = "premier item de la liste box ici"
            '...
     My.Settings.Save() 'on sauvegarde
    


    Et pour lire les paramètres afin de remplir automatiquement la listbox :

            ListBox1.Items.Add(My.Settings.element1)
    


    A l'avenir, séparez les threads afin d'avoir un thread = un problème.

    Merci et bonne soirée.

     


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact
    dimanche 18 décembre 2011 18:22
  • Ok merci par contre j'inclus comment ma listbox à ma boite de dialogue ?

    Cordialement

    Nicolas

    mardi 20 décembre 2011 12:41
  • Bonjour,

    Ce n'est pas la listbox elle-même qui sera sauvegardé mais par exemple un fichier texte contenant un élément de la listbox par ligne.

    Ce dernier sera ensuite lu pour remplir la listbox.


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact
    mardi 20 décembre 2011 12:48
  • Ahh ok par contre j'ai rentré votre code :

    Dim cheminfichier As String = ""
            Dim sfd As New SaveFileDialog
            sfd.Filter = "Fichiers textes (*.txt)|*.txt" 'le filtre sur les extensions des fichiers
            sfd.InitialDirectory = "C:\" 'repertoire initial
            If sfd.ShowDialog = DialogResult.OK Then 'si l'utilisateur valide un fichier pour la sauvegarde
                cheminfichier = sfd.FileName 'sfd.FileName contient le chemin du fichier sélectionné
            End If

    mais je ne trouve aucun fichier texte ??? avec le contenu de ma listebox !!!

    Cordialement

    Nicolas

    mardi 20 décembre 2011 12:50
  • Ahh ok par contre j'ai rentré votre code :

    Dim cheminfichier As String = ""
            Dim sfd As New SaveFileDialog
            sfd.Filter = "Fichiers textes (*.txt)|*.txt" 'le filtre sur les extensions des fichiers
            sfd.InitialDirectory = "C:\" 'repertoire initial
            If sfd.ShowDialog = DialogResult.OK Then 'si l'utilisateur valide un fichier pour la sauvegarde
                cheminfichier = sfd.FileName 'sfd.FileName contient le chemin du fichier sélectionné
            End If

    mais je ne trouve aucun fichier texte ??? avec le contenu de ma listebox !!!

    Cordialement

    Nicolas

    mercredi 21 décembre 2011 18:41
  • J'ai essayer ce code le fichier se crée bien mais il enregistre pas du tout ma listebox ????

    Voici le code que j'ai mis

    Private

     

    Sub Savethetext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    Savethetext.Click

     

    Dim save As New

    SaveFileDialog

    save.FileName =

    ""

    save.Filter =

    "text files (*.txt)|*.txt"

    save.Title =

    "save"

    save.ShowDialog()

     

    Try

     

    Dim write As New IO.StreamWriter

    (save.FileName)

    write.Write(ListBox1.Text)

    write.Close()

     

    Catch ex As Exception

     

    Cordialement Nicolas

     
    jeudi 22 décembre 2011 14:30
  • @Nicolas,

    Voici le code complet et commenté (basé sur votre code) :

     

     

    Public Class Form1
    
        Private Sub Savethetext_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Savethetext.Click
            Dim save As New SaveFileDialog()
            save.Filter = "text files (*.txt)|*.txt"
            save.Title = "save"
            If save.ShowDialog() = DialogResult.OK Then 'si l'utilisateur accepte d'enregistrer
                Try
    
                    Using write As New IO.StreamWriter(save.FileName)
                        For Each element As String In ListBox1.Items 'on écrit chaque élément de la listbox dans le fichier texte
                            write.Write(element & vbNewLine) 'ne pas oublier vbNewLine car les elements ne contiennent pas le caractère nouvelle ligne
                        Next
                    End Using
    
                Catch ex As Exception
                    'TODO traiter l'erreur
                End Try
            End If
        End Sub
    
        Sub Readthetext() 'lit le fichier texte
            If IO.File.Exists("C:\<chemindufichiertexte>.txt") Then 'si déjà il existe, alors
                Using reader As New IO.StreamReader("C:\<chemindufichiertexte>.txt") 'on lit le contenu de ce fichier
                    While reader.Peek <> False 'tant qu'on a pas tout lu
                        ListBox1.Items.Add(reader.ReadLine()) 'on lit et ajoute chaque ligne du fichier texte dans la listbox
                    End While
                End Using
            End If
    
        End Sub
    
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Readthetext() 'lit le fichier texte dès l'ouverture
        End Sub
    
    
    End Class


     


    • Modifié Michel K jeudi 22 décembre 2011 14:59 Bon visiblement j'ai des problèmes pour coloriser le code, désolé
    jeudi 22 décembre 2011 14:51
  • Bonjour,

    Parfait sa marche nikel :)

    par contre encore une question il et possible de rajouter plusieur listbox ou pas?

    Cordialement

    Nicolas

    vendredi 23 décembre 2011 08:59
  • Bonjour,

    Parfait sa marche nikel :)

    par contre encore une question il et possible de rajouter plusieur listbox ou pas?

    Cordialement

    Nicolas

    lundi 26 décembre 2011 18:36
  • Bonsoir

    Personne peut m'aider????

    Cordialement

    Nicolas

    jeudi 29 décembre 2011 18:46
  • Bonsoir Nicolas,

    Il y a plusieurs façon de le faire, par exemple créer plusieurs fichiers pour chaque liste (facile à faire mais pas l'idéal avec beaucoup de listboxes), ou encore faire tout dans un fichier en séparant les éléments des deux listboxes.

    Voilà un exemple utilisant le même fichier avec 2 listboxes : (à noter quand dans ce cas précis il est possible d'optimiser la façon de faire)

     

        Sub Readthetext() 'lit le fichier texte
    
            If IO.File.Exists("C:\<chemindufichiertexte>.txt") Then 'si déjà il existe, alors
                Using reader As New IO.StreamReader("C:\<chemindufichiertexte>.txt") 'on lit le contenu de ce fichier
                    Dim LaListBox As ListBox = ListBox1
                    Dim contenu As String = reader.ReadToEnd
                    Using sr As New IO.StringReader(contenu)
    
                        While sr.Peek <> False
                            Dim ligne As String = sr.ReadLine
                            If ligne = "#separateur#" Then
                                ligne = sr.ReadLine 'on lit la ligne suivante pour ne pas ajouter #separateur# à la listbox
                                LaListBox = ListBox2
                            End If
                            LaListBox.Items.Add(ligne)
                        End While
    
                    End Using
                End Using
            End If
    
        End Sub
        Private Sub Savethetext_Click((ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Savethetext.Click
    
            Dim save As New SaveFileDialog()
            save.Filter = "text files (*.txt)|*.txt"
            save.Title = "save"
            If save.ShowDialog() = DialogResult.OK Then 'si l'utilisateur accepte d'enregistrer
                Try
    
                    Using write As New IO.StreamWriter(save.FileName)
                        For Each element As String In ListBox1.Items 'on écrit chaque élément de la listbox dans le fichier texte
                            write.Write(element & vbNewLine) 'ne pas oublier vbNewLine car les elements ne contiennent pas le caractère nouvelle ligne
                        Next
                        write.Write("#separateur#" & vbNewLine)
                        For Each element As String In ListBox2.Items
                            write.Write(element & vbNewLine)
                        Next
                    End Using
    
                Catch ex As Exception
                    'TODO traiter l'erreur
                End Try
            End If
    
        End Sub
    


     

    Bonne soirée.


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact
    • Modifié Michel K jeudi 29 décembre 2011 21:52
    jeudi 29 décembre 2011 21:51
  • Bonjour,

    Merci sa fonctionne par contre pour réouvrir le fichier qu'on n'a enregistrer c'est possible?

    Cordialement

    Nicolas

    lundi 2 janvier 2012 08:01
  • Bonjour,

    J'ai entré ce code si mais mon fichier ne se remet pas dans la listbox1 !!!

    Private

     

    Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles

    Button13.Click

     

    Try

     

    Dim open As New

    OpenFileDialog

    open.FileName =

    ""

    open.Filter =

    "fichier texte (*.txt) |*.txt"

    open.Title =

    "Ouvrir"

    open.ShowDialog()

     

    Dim lire As New System.IO.StringReader

    (open.FileName)

    ListBox1.Text = lire.ReadToEnd

    ListBox3.Text = lire.ReadToEnd

    lire.Close()

     

    Catch ex As

    Exception

     

    End Try

     

     

    Quelqu'un peut m'aider?

    Cordialement

    Nicolas

     
    mardi 3 janvier 2012 12:38
  • Bonjour,

    La procédure "Readthetext()" est à adapter à vos listboxes.

    En l'occurrence, remplacer les noms des listboxes (1 et 2) par les vôtres.

    Cette procédure prend en compte un fichier existant (ou crée par Savethetext_click)sous la forme :

    element1_listbox1
    element2_listbox2
    #separateur#
    element1_listbox2
    element2_listbox2

    listbox1 et 2 indiquent simplement la première listbox et la deuxième.

    Enfin :

    ListBox1.Text = lire.ReadToEnd

    ListBox3.Text = lire.ReadToEnd

    Affichera au mieux le même contenu dans les deux listboxes.

    Peut-être que j'ai du mal à comprendre votre démarche, peut-être qu'elle a changé entre temps ?

    À l'avenir, veuillez créer un nouveau sujet pour ne pas s'éterniser sur un topic censé être résolu.

    Bonne journée.


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement - Best Regards. Contact
    • Modifié Michel K mardi 3 janvier 2012 12:55
    mardi 3 janvier 2012 12:55