Fichier texte et inputbox

Messages postés
12
Date d'inscription
dimanche 13 août 2017
Dernière intervention
27 août 2017
- 27 août 2017 à 13:13 - Dernière réponse :
Messages postés
12258
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 novembre 2018
- 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
Afficher la suite 

Votre réponse

7 réponses

Messages postés
23256
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
17 novembre 2018
- 27 août 2017 à 13:33
Messages postés
12
Date d'inscription
dimanche 13 août 2017
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
Commenter la réponse de jordane45
Messages postés
12258
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 novembre 2018
- 27 août 2017 à 13:44
0
Merci
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.

Messages postés
12
Date d'inscription
dimanche 13 août 2017
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 ?
Messages postés
12258
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 novembre 2018
- 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...
Messages postés
12
Date d'inscription
dimanche 13 août 2017
Dernière intervention
27 août 2017
>
Messages postés
12258
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 novembre 2018
- 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
Messages postés
12258
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
17 novembre 2018
>
Messages postés
12
Date d'inscription
dimanche 13 août 2017
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
Commenter la réponse de Whismeril

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.