Tronquer un fichier texte

[Résolu]
Signaler
Messages postés
15
Date d'inscription
samedi 21 juin 2003
Statut
Membre
Dernière intervention
19 avril 2006
-
Messages postés
15
Date d'inscription
samedi 21 juin 2003
Statut
Membre
Dernière intervention
19 avril 2006
-
VB6
Excusez. Il semblerait que je n'avais pas posté mon texte au bon endroit ou que je n'avis pas été assez explicite. Je reformule ma question ici dans l'espoir de trouver réponse a mon prob :

Soit un textbox multilignes (Text1) dans lequel on peut rédiger ou modifier un texte. Je voudrais transférer uniquement les 5 premières lignes de ce texte dans un autre textbox (Text2) se trouvant dans la même form. Trop compliqué pour moi…

En fait, je voudrais faire un gende de bloc-note qui soit capable de tranférer (apres un clic sur un bouton)les 5 premieres lignes du texte dans un autre textbox se trouvant dans le meme form. Il efface la 6e ligne et suivantes avant de transférer dans text2.

Je pense a un bout de code basé sur l'analyse du nombre de lignes et non pas de la longueur des lignes puisque celles-ci peuvent etre modifiées dans Text1 avant d'etre tranférées dans Text2.

Observation : J'ai d'abord cherché avant de poser mon problème.

Merci de me fournir un bout de code.

OvO

7 réponses

Messages postés
47
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
11 décembre 2007

Dans ce cas, c'est assez simple. Le caractère de retour à la ligne est (je crois) le caractère 13.
On va incrémenter le nombre de lignes parcourues à chaque fois que l'on trouve ce caractère. Ensuite, une fois qu'on arrive à 6, il suffit de sortir de la boucle pour effacer les caractères avant.

Voici un morceau de code :

Dim act_line As Byte 'Le numéro de la ligne en cours.
Dim i as Byte 'variable compteur pour la boucle
act_line = 1
For i=1 To Len(Text1.Text)
If Mid(Text1.Text, i, 1) = Chr(13) Then
act_line = act_line + 1
If act_line = 6 Then Exit For 'On vient d'atteindre la 6ème ligne, donc on quitte la boucle
End If
Next i
Text2.Text = Left(Text1.Text, i)
'Ensuite pour effacer les autres lignes :
Text1.Text = Text2.Text

Mais si tu parles de tranferts, n'est-ce pas plutôt supprimer les 5 lignes du Text1 qui sont transférées dans le Text2 ?
Dans ce cas, remplaces la ligne en gras par : Text1.Text = Right(Text1.Text, Len(Text1.Text)-(i-1))

Attention : Comme je n'ai pas Internet chez moi, je travaille dans un cyberlocal, et je n'ai pas VB. Je ne peux donc pas vérifier si le code fourni est exact. Il peu y avoir des imprécisions telles que le 'Len(Text1.Text)-(i-1)) ; Ce n'est peut être pas i-1.
De même, le saut de ligne étant vbCrLf, il est composé aussi du caractère 10. Si cela ne marche pas, essaie de remplacer le 13 par 10.

Enfin : Ce code est fait pour Visual Basic 6.0.
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
27
Autre option avec un split()

Dim L() as string
Dim i as long

L = Split(textbox1.text,vbcrlf,6)
If ubound(l)<5 then ' Moins de 6 lignes, on copie brutalement
textbox2.text = textbox1.text
else ' Plus de 5 lignes, on bascule les 5 premières
Textbox2.text = ""

For i = 0 to 4
TextBox2.text = Textbox2.Text & l(i) & vbcrlf
Next
end if

Pas testé mais cela devrait être OK

CR
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 70 internautes nous ont dit merci ce mois-ci

Messages postés
47
Date d'inscription
samedi 21 août 2004
Statut
Membre
Dernière intervention
11 décembre 2007

Salut, pausezero.

Simple question : Qu'est-ce que tu entends par 'ligne' ? Une ligne s'arrêtre après un point, ou elle s'arrête une fois qu'elle a atteint le bord droit du TextBox ? Dans ce dernier cas, est-ce que tes mots sont tronqués ?
Messages postés
15
Date d'inscription
samedi 21 juin 2003
Statut
Membre
Dernière intervention
19 avril 2006

Salut Schlangan. Une ligne de texte se terminant par un retour a la ligne. Elle peut comporter une lettre, une chaine de caracteres ou etre vide.

OvO
Messages postés
15
Date d'inscription
samedi 21 juin 2003
Statut
Membre
Dernière intervention
19 avril 2006

Oh! Merciiiiiiii ! En plus, presque instantanément :)
J'ai une erreur lors d'emploi de fichiers constitués d'un grand nombre de lignes mais de très petit poids (max 5 KB). Je ne sais si c'est dû à ton code ou si c'est la constitution de l'ensemble qui en est la cause. Mais il me convient tel quel puisque les fichiers textes que j'emploie ne sont pas longs. J'ai placé un msgbox d'erreur pour le cas on oublierais cette contrainte..Encore une fois : Merci.<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />



OvO
Messages postés
15
Date d'inscription
samedi 21 juin 2003
Statut
Membre
Dernière intervention
19 avril 2006

Crenaud76, je n'ai pas essayé ton code mais il est intéressant lui aussi. Vais l'essayer demain ou après-demain (manque de temps). Merci à toi aussi.

OvO
Messages postés
15
Date d'inscription
samedi 21 juin 2003
Statut
Membre
Dernière intervention
19 avril 2006

Crenaud76, je viens d'essayer ton code. Eh ben, faut dire qu'il est super. Plus stable et radical comme je le voulais. Merci.

OvO