Retour à la ligne dans un .txt

Résolu
cs_mauris Messages postés 26 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 7 juillet 2006 - 19 sept. 2004 à 16:34
cs_mauris Messages postés 26 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 7 juillet 2006 - 21 sept. 2004 à 21:48
Salut à tous,

voilà j'ai un bouton pour enregistrer ma textbox dans un .txt :

Private Sub Command7_Click()
Open App.Path & "" & Text22 & ".txt" For Output As 1
Print #1, Text2.Text
End Sub

Seulement voilà, Text2.Text qui est en multiLine contient pas mal de texte, et donc, quand je sauve dans le .txt et bien j'ai tout le texte sur une seul ligne.

Je voudrai que par exemple au bout de 50 caractères que sa passe à la ligne suivante.

Quelqu'un sait comment je peux faire svp ?

Merci à tous bonne fin de journée/week-end.

ps : si vous savez aussi comment je pourrai faire par la suite pour mettre un certain texte devant chaque ligne, ca serai bien aussi :)

Merci.

14 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
19 sept. 2004 à 20:57
Bon, ok, g oublié de traduire une variable dans le précédent exemple (buffer).

J'ai testé, tel que, le code suivant et ça fonctionne chez moi :

Private Sub Command1_Click()
Dim s As String
Dim l As Integer

l = 10 'nb de caractères à enregistrer

' On supprime les retours ligne s'il y en a dans le texte
s = Trim(Replace(Text1.Text, vbCrLf, " "))

Open "c:\blablabla.txt" For Output As 1

Do While Len(s) > 0
If Len(s) >= l Then
Print #1, Left$(s, l)
s = Right$(s, Len(s) - l)
Else
Print #1, Left$(s, Len(s))
s = ""
End If
Loop

Close #1

End Sub


Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
3
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
20 sept. 2004 à 19:47
Bon, pour terminer ton problème, si on s'en tient au précédent code, tu peux coder :

Print #1, "-)" & Left$(s, l)
Print #1, "-)" & Left$(s, Len(s))
ou
Print #1, "-)"; Left$(s, l)
Print #1, "-)"; Left$(s, Len(s))

le '&' te permet de concaténer plusieurs chaines
le ';' est un caractère de suite pour print #x
ex, si tu codes :
print #1, "a";
print #1, "b";
print #1, "c"
tu auras 'abc' sur une même ligne dans ton fichier.

Dans le cas présent, les 2 sont valables, tu choisis.

Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
3
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
21 sept. 2004 à 19:40
Je crois qu'il vaut mieux utiliser split pour ça, car tester le dernier espace de l'enreg, c'est pas très fiable, puisque ça ne te dit pas si c un mot entier ou un bout de mot qui termine ta ligne.

Un petit exemple :

Private Sub Command1_Click()
Dim s As String
Dim s1 As String
Dim l As Integer
Dim i As Integer, j As Integer

Dim t() As String

l = 10 'nb de caractères à enregistrer

' On supprime les retours ligne s'il y en a dans le texte
s = Trim(Replace(Text1.Text, vbCrLf, " "))
' on découpe la chaine en mots
t = Split(s, " ")

Open "c:\blablabla.txt" For Output As 1

For i = LBound(t) To UBound(t)
  If Len(t(i)) >= l Then
    Print #1, t(i) ' pour les mots plus longs que l ou égaux à l
  Else
    s1 = t(i) ' on mémorise un 1er mot
    For j = i + 1 To UBound(t) ' on rajoute des mots sans dépasser l
      If Len(s1 & " " & t(j)) <= l Then
        s1 = s1 & " " & t(j)
        i = i + 1
      Else
        Exit For
      End If
    Next
    Print #1, s1
  End If
Next

Close #1

End Sub


Dernière remarque, attention, il y a des mots plus longs que 10 !

Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
3
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
19 sept. 2004 à 17:14
Salut, dans un textbox multiline, les lignes sont séparées par un vbcrlf donc pour enregistrer ton textbox dans un fichier, il faut que tu utilises :

dim buffer() as string

buffer = Split(text2.Text, vbCrLf)

puis, à la place de Print #1, Text2.Text :

for i = lbound(buffer) to ubound(buffer)
Print #1, buffer(i)
next

Si tu veux découper en tranche de 50 cars, tu utilises d'abord :

dim buffer as string
buffer = replace(text2.text, vbcrlf, " ") et tu n'as plus qu'à traiter ta chaîne avec des mid$. A toi de gérer la longueur.

Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0

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

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
19 sept. 2004 à 17:49
Pour le découpage, essaie ça :

Private Sub Command7_Click()
Dim s As String
Dim l As Integer

l = 50 'nb de caractères à enregistrer

' On supprime les retours ligne
s = Trim(Replace(Text2.Text, vbCrLf, " "))

Open App.Path & "" & Text22 & ".txt" For Output As 1

Do While Len(s) > 0
If Len(s) >= l Then
MsgBox Left$(s, l)
buffer = Right$(s, Len(s) - l)
Else
MsgBox Left$(s, Len(s))
s = ""
End If
Loop
End Sub
Close #1


Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
19 sept. 2004 à 17:50
Oups, bien sûr, tu remplaces les "msgbox" par "Print #1,".

Cordialement, CanisLupus

Tous les glands ne deviennent pas des chênes mais tous les chênes ont été des glands
0
cs_mauris Messages postés 26 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 7 juillet 2006
19 sept. 2004 à 20:43
N'en ca marche toujours pas, le .txt se crée bien mais il est vide.

Sinon on va faire plus simple, je reprends :

Une textbox : textbox1
Un commandbutton : Command1

Mon code :

Private Sub Command1_Click()
Open App.Path & "\blablabla.txt" For Output As 1
Print #1, Text1.Text
End Sub

Donc là, ca enregistre tout se qu'il y a dans la textbox sur la meme ligne dans le .txt

Voilà, maintenent, imaginons dans la textbox1 je tape se texte (sans les " ") :

"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

Et moi, je voudrai que quand je clic sur le bouton 1, ca s'enregistre dans blablabla.txt comme ca :

aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa
aaaaaaaaaa

(donc là, 10 caractéres maxi par ligne).

Voilà c'est plus simple comme ca :)

Merci beaucoup à tous ;)
0
cs_mauris Messages postés 26 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 7 juillet 2006
19 sept. 2004 à 21:35
Merci ca fonctionne impecable ;)

Et sinon, une soluce pour mettre devant toutes les lignes de mon .txt par exemple "-)" devant toutes les lignes ?

Merci beaucoup de ton aide.

Bonne soirée/nuit à tous.
0
cs_ITALIA Messages postés 2169 Date d'inscription vendredi 20 avril 2001 Statut Membre Dernière intervention 30 juin 2009 9
20 sept. 2004 à 10:31
Coches Reponses Acceptées Si c Ok !!!

It@li@
0
cs_mariooo Messages postés 1 Date d'inscription lundi 20 septembre 2004 Statut Membre Dernière intervention 20 septembre 2004
20 sept. 2004 à 11:46
"Coches Reponses Acceptées Si c Ok !!!

It@li@ "

tu le fais expres ou koi tu vois bien qu'il a pauser une autre question.
0
cs_mauris Messages postés 26 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 7 juillet 2006
20 sept. 2004 à 16:28
Oui mon problème n'ai pas fini, il porté sur 2 questions, une a été résolu mais pas encore l'autre.

Merci à tous.
0
cs_mauris Messages postés 26 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 7 juillet 2006
21 sept. 2004 à 14:03
Ok, merci beaucoup CanisLupus, je test ca se soir et je te tiens au courant ;)

Merci, a+
0
cs_mauris Messages postés 26 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 7 juillet 2006
21 sept. 2004 à 18:38
Ok, donc, ca marche c'est nikel, merci beaucoup pour ton aide.

Par contre, le problème qu'y se passe là, c'est qu'il me coupe les mots en bout de ligne (logique puisqu'on coupe a 10 caractères).

Exemple, si j'ai la phrase "Merci de lire la charte du forum avant de poster votre message"

je vais avoir :

Merci de l
ire la cha
rte du for
um avant d
e poster v
otre messa
ge

N'y à t'il pas un moyen de faire en sorte qu'il ne coupe pas les mots ? J'ai pensé par exemple que quand il voit le dernier espace " " il va à la ligne, ainsi il dépasse pas les 10 caractères et ne coupe pas les mots.

Merci pour votre aide ;)
0
cs_mauris Messages postés 26 Date d'inscription dimanche 18 avril 2004 Statut Membre Dernière intervention 7 juillet 2006
21 sept. 2004 à 21:48
Merci ! Voilà tout fonctionne :)

;);)

Bonne soirée à tous, et merci à CanisLupus.
0
Rejoignez-nous