Retour à la ligne PRECEDENTE dans une TextBox

Signaler
Messages postés
54
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
7 août 2012
-
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
-
Bonjour, je souhaiterais pouvoir effectuer un retour en écriture à la ligne précédente dans une TextBox... C'est à dire de faire l'inverse d'un retour chariot (VBCrLf).

En image je voudrais passer du texte ci dessous au deuxième texte.

blabnaka


bkkahahba


blabnaka

bkkahahba


Merci pour vos réponses.

10 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Bonjour,
difficile de te comprendre à partir de ce que tu exposes.
On ne peut que tenter de deviner, mais sans assurance.
Jusqu'à du plus claire ===>>
Si ce sont des lignes réelles (séparées par un vrai retour à la ligne) : éclate (par split) le texte sur le retour à la ligne et supprime le dernier retour.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
54
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
7 août 2012

Non, j'ai une texte comme celui ci, admettons :
ligne1

ligne2


Pour insérer un retour à la ligne suivante, ou couramment appelé un retour chariot, on utilise VbCrLf, jusqu'à là on est d'accord normalement ^^.
Moi je veux faire l'inverse, enlever ce retour chariot "en trop" pour obtenir :
ligne1
ligne2


Avez vous une astuce ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
C'était donc bien ce que j'avais deviné !
Avez vous une astuce ?

Une "astuce", non, mais une méthode, oui ! Et je te l'ai indiquée


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
54
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
7 août 2012

Ta "méthode" ne me plaît pas vraiment, c'est pas propre du tout.
En fait un bout de code résumera mieux que n'importe quel mot.
Dim monStreamReader1 As New StreamReader(Me.OpenFileDialog1.FileName) 
Dim monStreamReader2 As New StreamReader(Me.OpenFileDialog2.FileName) 
Dim c1 As String
Dim c2 As String
    While Not monStreamReader1.EndOfStream
          c1 = CChar(ChrW(monStreamReader1.Read()))
          c2 = CChar(ChrW(monStreamReader2.Read()))

          If c1 = c2 Then
             ' Chars identiques
             RichTextBox1.SelectedText = c1
             RichTextBox2.SelectedText = c2
          Else
            ' Chars différentes
          End If
     End While
     monStreamReader1.Close()
     monStreamReader2.Close()


Je lis un texte caractère par caractère et je les comparent, si ils sont égaux, je les réécris, sauf qu'en les réécrivant à chaque retour chariot, il me saute non pas une ligne, mais deux, donc j'aimerais "corriger" ce problème.

Bonjour,

Dans VB.net, les textboxes et les RichTextboxes ont une collection Lines() qui retourne les lignes du Textbox.

P.S. Ouvrir l'aide, cela ne donne pas la peste. Regarder dans la fenêtre "Propriétés", non plus.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Ce que j'en déduis, personnellement, c'est que les variables c1 et/ou c2 contiennent un retour charriot indésirable "ramassé" lors de la lecture.
Il devrait alors suffire de remplacer ce retour charriot par "" à l'écriture !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Je viens de chercgher à voir dans quelles cironstances la chose peut se produire ===>> j'en ai trouvé une :
Fichier texte écrit par write et dont le contenu d'une ligne contient en son sein le caractère 10 et le caractère 13 (dans cet ordre)
Lecture par read : double retour charriot avec Richtextbox (un seul avec une textbox).
Si tu es dans ce cas : remplace le caractère 13 par rien (fonction replace)., de sorte à ne garder que le caractère 10.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
54
Date d'inscription
lundi 2 novembre 2009
Statut
Membre
Dernière intervention
7 août 2012

J'ai essayé tout ça, sans aucun résultat :(

RichTextBox1.Text = RichTextBox1.Text.Replace(Chr(13), "test")

RichTextBox1.Text = RichTextBox1.Text.Replace(ChrW(13), "test")

RichTextBox1.Text = RichTextBox1.Text.Replace(VbCr, "test")

RichTextBox1.Text = RichTextBox1.Text.Replace(VbCrLf, "test")


En revanche lorsque j'utilise la fonction Replace avec un chr(10), cela m'enlève bien TOUT les retour chariot, tout mon texte est donc écrit sur une seule ligne. Le problème ne vient donc pas du Replace.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Ce n'est pas la richtextbox, qu'il faut traiter, mais tes variables c1 et c2, avant même de les écrire dans la textbox !
Lis s'il te plait avec soin ce que je t'ai dit plus haut !
Pour mémoire :
Ce que j'en déduis, personnellement, c'est que les variables c1 et/ou c2 contiennent un retour charriot indésirable "ramassé" lors de la lecture.
Il devrait alors suffire de remplacer ce retour charriot par "" à l'écriture


C'est sur c1 et c2, qu'il te faut utiliser replace.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Salut

Pas trop compris
Tu veux lire ton fichier et supprimer les lignes vides ?
Private Function Process(ByVal fileinput As String) As List(Of String)
   Dim listinput As New List(Of String)
   Dim listoutput As New List(Of String)
   Try
   listinput = System.IO.File.ReadAllLines(fileinput).ToList
    For Each item As String In listinput
       If item.Length > 0 Then
          listoutput.Add(item)
       End If
    Next
    Catch ex As Exception
            MessageBox.Show(ex.Message)
    End Try
        Return listoutput
    End Function


pour utiliser avec un textbox
    TextBox1.Lines = Process(Application.StartupPath & "\BLABLA.txt").ToArray 


avec un richtextbox
  RichTextBox1.Lines = Process(Application.StartupPath & "\BLABLA.txt").ToArray