Tronquer un fichier texte

Résolu
pausezero Messages postés 15 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 19 avril 2006 - 5 avril 2006 à 11:42
pausezero Messages postés 15 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 19 avril 2006 - 9 avril 2006 à 23:19
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

Schlangan Messages postés 47 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 11 décembre 2007
5 avril 2006 à 12:19
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
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
5 avril 2006 à 17:36
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
Schlangan Messages postés 47 Date d'inscription samedi 21 août 2004 Statut Membre Dernière intervention 11 décembre 2007
5 avril 2006 à 11:51
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 ?
0
pausezero Messages postés 15 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 19 avril 2006
5 avril 2006 à 12:08
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pausezero Messages postés 15 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 19 avril 2006
6 avril 2006 à 00:00
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
0
pausezero Messages postés 15 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 19 avril 2006
6 avril 2006 à 00:07
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
0
pausezero Messages postés 15 Date d'inscription samedi 21 juin 2003 Statut Membre Dernière intervention 19 avril 2006
9 avril 2006 à 23:19
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
0
Rejoignez-nous