Fichier texte et inputbox

BenBox Messages postés 12 Date d'inscription dimanche 13 août 2017 Statut Membre Dernière intervention 27 août 2017 - 27 août 2017 à 13:13
Whismeril Messages postés 19019 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 14 avril 2024 - 27 août 2017 à 15:09
Bonjour amis de la communauté,

Je sollicite votre aide. Je m'explique.

Lors de l'ouverture de mon inputbox, je saisie du texte et je l'enregistre dans un fichier .txt jusque là tout va bien.

Quand je ré-ouvre cette inputbox et que je saisie du texte, celui écrase l'ancien texte ajouter précédemment.

J'aimerais que le texte s'ajoute l'un à la suite de l'autre, que dois-je modifier dans mon code ???

Merci de votre aide

    Private Sub CmdAjoutUtilisateuOutils_Click(sender As Object, e As EventArgs) Handles CmdAjoutUtilisateuOutils.Click
        '***************************************************************************************************************
        '************                  C R E A T I O N      I N P U T B O X                                 ************
        '************                                                                                       ************
        '***************************************************************************************************************

        Dim message, title, defaultValue As String
        Dim myValue As Object
        ' affiche le texte pour l'utilisateur
        message = "Ajouter un nouvel utilisateur"
        ' Donne le titre à l'inputbox
        title = "Utilisateur"
        defaultValue = ""   ' valeur par defaut 

        ' Affiche le titre, le message et la valeur par defaut.
        myValue = InputBox(message, title, defaultValue)
        ' Si l'utilisateur a cliqué sur Annuler, la valeur par defaut se met
        If myValue Is "" Then myValue = defaultValue

        '***************************************************************************************************************
        '************         E N R E G I S T R E M E N T   D E  I N P U T B O X                            ************
        '************                                                                                       ************
        '***************************************************************************************************************
        ' Créer la chaîne de caractères avec les lignes de texte en  retour de l'inputbox
        Dim lines() As String = {myValue}

        ' Définit une variable sur le chemin Mes documents.
        Dim mydocpath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

        ' Écrit le nouveau fichier nommé "IN_OUT-outils.txt".
        Using outputFile As New IO.StreamWriter(mydocpath & Convert.ToString("\IN_OUT-outils.txt"))
            For Each line As String In lines
                outputFile.WriteLine(line)
            Next
        End Using

2 réponses

jordane45 Messages postés 38135 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 13 avril 2024 344
27 août 2017 à 13:33
0
BenBox Messages postés 12 Date d'inscription dimanche 13 août 2017 Statut Membre Dernière intervention 27 août 2017
27 août 2017 à 13:43
Merci, mais peux-tu mieux me renseigner. Je viens d'un autre monde de programmation et travailler avec les fichiers , je n'en ai pas fait assez, d'où mon manque de connaissance et expérience
0
Whismeril Messages postés 19019 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 14 avril 2024 655
27 août 2017 à 13:44
Bonjour,

ça n'a rien à voir avec l'inputbox, c'est ta façon d'écrire le fichier.
Tu écris un fichier entier, donc forcément ça écrase le précédent.

Essaye
File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\IN_OUT-outils.txt", myValue + Environment.NewLine)


A la place de tout ça
        ' Créer la chaîne de caractères avec les lignes de texte en  retour de l'inputbox
        Dim lines() As String = {myValue}

        ' Définit une variable sur le chemin Mes documents.
        Dim mydocpath As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)

        ' Écrit le nouveau fichier nommé "IN_OUT-outils.txt".
        Using outputFile As New IO.StreamWriter(mydocpath & Convert.ToString("\IN_OUT-outils.txt"))
            For Each line As String In lines
                outputFile.WriteLine(line)
            Next
        End Using



D'autre part, il n'est pas nécessaire de convertir en string
"\IN_OUT-outils.txt"
ou quoique ce soit écrit entre guillemets, en effet c'est déjà une string.

Enfin, je t'ai proposé, par 2 fois, la lecture d'un article prévenant des erreurs à éviter quand on vient de VB6, force est de constater que tu n'as pas appliqué les conseils qui y sont présentés. Car InputBox n'est pas une instruction VB.Net, mais un import de VB6, ça marche souvent ces imports, mais des fois ça plante. Et là il est très difficile de trouver pourquoi.

0
BenBox Messages postés 12 Date d'inscription dimanche 13 août 2017 Statut Membre Dernière intervention 27 août 2017
27 août 2017 à 14:03
Salut, j'avoue que je n'ai pas encore pris connaissance de l'article. Je fonce dans ce que je sais faire.

Tu me donne ce code
File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\IN_OUT-outils.txt", myValue + Environment.NewLine)


Mais quel est la ligne que je dois modifier sur mon code ?
0
Whismeril Messages postés 19019 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 14 avril 2024 655
27 août 2017 à 14:09
Je t'ai écrit à la place de quoi il faut le mettre, non seulement tu lis pas les articles que l'on te propose, mais les réponses non plus...
0
BenBox Messages postés 12 Date d'inscription dimanche 13 août 2017 Statut Membre Dernière intervention 27 août 2017 > Whismeril Messages postés 19019 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 14 avril 2024
27 août 2017 à 14:35
Je l'ai collé mais ayant une erreur de syntaxe, je me disais " je me suis trompé de ligne "

J'ai du ajouter
 IO.
devant
File.AppendAllText(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\IN_OUT-outils.txt", myValue + Environment.NewLine)

Je vais me plancher ce soir sur l'article.

Merci
0
Whismeril Messages postés 19019 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 14 avril 2024 655 > BenBox Messages postés 12 Date d'inscription dimanche 13 août 2017 Statut Membre Dernière intervention 27 août 2017
27 août 2017 à 15:09
Alors, c'est qu'il n'y a pas Imports System.IO tout en haut de ta classe.

Si tu ne mets pas l'import, tu dois te référer à l'espace de nom à chaque fois que tu en utilises un objet. Si tu mets l'import tu n'as plus à t'y référer.

Pour 1 ou 2 lignes de code, l'import n'est pas forcement utile, au delà ça fait gagner des caractères à tapper et tous les objets de l'espace de nom sont directement accessibles dans Intellisense
0
Rejoignez-nous