Pb: Enregistrement d'un fichier .txt

cs_sinseman21 Messages postés 22 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 1 novembre 2007 - 4 juin 2004 à 09:00
cs_sinseman21 Messages postés 22 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 1 novembre 2007 - 8 juin 2004 à 14:46
Salut à tous,

j'ai un petit souci dans l'enregistrement de mon textbox dans un fichier texte, je vous explique.
exemple:
en ce moment dans ma textbox, je vais avoir:

le chiens de ma soeur est blanc
la maison de ma grand-mere est cassée
l'ours est impressionnant
le cheval blanc d'henri 4

Lorsque j'enregistre dans un fichier texte j'ai en ce moment:

|le-chien-de-ma-soeur-est-blanc-------------|
|la-maison-de-ma-grand-mere-est-cassée--|
|l'ours-est-impressionnant--------------------|
|le-cheval-blanc-d'henri-4---------------------|

pour le moment pas de probleme:

mais lorsque dans ma textbox, je vais avoir une phrase qui depasse le nombre de caractère max prédéfini comme ceci:

la petite maison en bois dans la foret est en train de tomber
le chiens de ma soeur est blanc
la maison de ma grand-mere est cassée
l'ours est impressionnant
le cheval blanc d'henri 4

j'aimerai que dans mon fichier texte il se passe ceci:

|la-petite-maison-en-bois-dans-la-foret-est-|
|le-chien-de-ma-soeur-est-blanc-------------|
|la-maison-de-ma-grand-mere-est-cassée--|
|l'ours-est-impressionnant--------------------|
|le-cheval-blanc-d'henri-4---------------------|

|en-train-de-tomber---------------------------|
|-------------------------------------------------|
|-------------------------------------------------|
|-------------------------------------------------|
|-------------------------------------------------|

et ainsi de suite, plus la phrase dans ma textbox est longue, plus on créé de ligne avec le même nombre de caractère max

j'espere avoir été assez explicite,
n'hésiter pas à me contacter si vous voulez avoir plus d'infos

merci d'avance

Benoit.vince@caramail.com

11 réponses

TheLordFreddy Messages postés 157 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 3 février 2005 2
4 juin 2004 à 09:55
slt jvoi pas pourqoi tu te complique pour enregistrer un text box (que j'appellerai TB1) dans un fichier text (que j'appellerai text1.txt) voici une soluce:

'ouverture fichier
open "c:\text.txt" for ouput as #1
    'ecriture
    print #1, TB1
'fermeture fichier
close #1


-------------------------------------------
Ne vous fiez pas à l'apparence...
0
cs_sinseman21 Messages postés 22 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 1 novembre 2007
4 juin 2004 à 10:24
je t'explique le truc,

en fait je suis en train de developper un log pour creer des tablatures de guitare

donc dans ma textbox je vais avoir quelque chose comme ça:
11 215 12 556 84 4 84 1 4 4 46
45 87 87 9 49 48 48 8
45 48 8 48 88 6
55 44 5 5 6 6
ect.......

pour que ce soit comprehensble par n'importe quel guitariste
je vais avoir dans un fichier texte quelque chose comme ça:

|11---215----12--556-----84--4-84-----1-4--4-46-----|
|-45---87---87-9--------49----48----48-----8----------|
|45------48-------8---------48--88-----------6----------|
|55----------44-5-------5------6-6-----------------------|
ect.......

chaque ligne correspondant à une corde de guitare

le souci est que lorsque j'ai atteint un certain nombre de caractère, je veux revenir à la ligne et marque la suite de mon texte

|11---215----12--556-----84--4-84-----1-4--4-46-----|
|-45---87---87-9--------49----48----48-----8----------|
|45------48-------8---------48--88-----------6----------|
|55----------44-5-------5------6-6-----------------------|

|-25------54-5---54---545-5----45-4--54---54---------|
|1254----54----5-5--5-----------------5-5-5---4-2-2---|
|---------1-----1-5----45-4------8----5--0---54---------|
|-----------------------------------------------------------|

|-----------------------------------------------------------|
|-----------------------------------------------------------|
|-----------------------------------------------------------|
|-----------------------------------------------------------|

voila

Benoit.vince@caramail.com
0
TheLordFreddy Messages postés 157 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 3 février 2005 2
4 juin 2004 à 10:32
écrit le code ici pour que je regarde stp
-------------------------------------------
Ne vous fiez pas à l'apparence...
0
cs_sinseman21 Messages postés 22 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 1 novembre 2007
4 juin 2004 à 10:47
Dim ligne As String
Dim reste As String
Dim r As Integer
Dim lenmax As Integer
Dim resultat As Integer
Dim j As Integer

Private Sub NT_Click()
If MsgBox("Etes-vous sur de vouloir creer une nouvelle tablature ?" & vbCrLf & "Vous perdrez votre travail en cours.", vbOKCancel, "Effacer ?") = vbCancel Then Exit Sub
txtedition.Text = ""
Call raffr
txtauteur.Text = ""
txttitre.Text = ""
txtinfo.Text = ""

End Sub

Private Sub O_Click()

'On Error GoTo erreur
Dim tablature As String
Dim textline As String
Dim i As Integer

If MsgBox("Etes-vous sur de vouloir ouvrir un fichier ?" & vbCrLf & "Vous perdrez votre travail en cours.", vbOKCancel, "Effacer ?") = vbCancel Then Exit Sub
ouverture.InitDir = App.Path ' le repertoire de l'application sera le repertoire initial du commonDialog
ouverture.ShowOpen
tablature = ouverture.FileName
If tablature <> "" Then
Open tablature For Input As #1
For i = 1 To 13
Line Input #1, textline
If i = 6 And textline <> "" Then
txtauteur.Text = textline
Else
txtauteur.Text = ""
End If
If i = 7 And textline <> "" Then
txttitre.Text = textline
Else
txttitre.Text = ""
End If
If i = 10 And textline <> "" Then
txtinfo.Text = textline
Else
txtinfo.Text = ""
End If
If i = 13 And textline <> "" Then
txtedition.Text = textline
Else
txtedition.Text = ""
End If
Next i

Close #1
End If

'erreur:
'MsgBox ("Erreur!!!!!!!!!!!!!!!!!!!!!!")

End Sub

Private Sub print_Click()
imprimer.ShowPrinter
On Error GoTo erreur
Printer.CurrentX = 20
Printer.CurrentY = 30
Printer.Font = "ARIAL"
Printer.FontSize = 12
Printer.ForeColor = vbBlack
Printer.Print label1(0).Text
Printer.Print label1(1).Text
Printer.Print label1(2).Text
Printer.Print label1(3).Text
Printer.Print label1(4).Text
Printer.Print label1(5).Text
Printer.EndDoc
erreur:
MsgBox ("Pas d'imprimante configuré !!! ")

End Sub

Private Sub Q_Click()
Unload Me
End

End Sub

Private Sub S_Click()
lenmax = 100
enregistrement.InitDir = App.Path ' le repertoire de l'application sera le repertoire initial du commonDialog
enregistrement.ShowSave
Open enregistrement.FileName & ".txt" For Output As #1
Print #1, " ----------------------------------------------------"
Print #1, " | TABLATURE GUITARE V1.0 créé par BENOIT Vincent |"
Print #1, " | benoit.vince@caramail.com |"
Print #1, " ----------------------------------------------------" + vbCrLf
Print #1, "Composé par : " + txtauteur.Text + vbCrLf + "titre : " + txttitre.Text + vbCrLf + "Informations sur le morceau : " + vbCrLf + "----------------------------" _
; vbCrLf + txtinfo.Text + vbCrLf

For j = 0 To 5
If Len(label1(j).Text) <= lenmax Then
Print #1, "|" + Replace(label1(j).Text, " ", "-") & String(lenmax - Len(label1(j).Text), "-") + "|"
Else
Do
resultat = Len(label1(j).Text) - lenmax
Loop While (resultat > lenmax)
Print #1, resultat
End If
Next j

Close #1
End Sub

Private Sub txtedition_Change()
Call raffr
Do While InStr(txtedition.Text, "-") <> 0
txtedition.Text = Replace(txtedition.Text, "-", " ")
Loop
reste = txtedition.Text
For i = 1 To 6
If InStr(reste, vbCrLf) <> 0 Then
ligne = Mid(reste, 1, (InStr(reste, vbCrLf) - 1))
label1(i + (5 - 6)).Text = ligne
If Len(reste) >= InStr(reste, vbCrLf) + 2 Then
reste = Mid(reste, InStr(reste, vbCrLf) + 2, Len(reste) - (InStr(reste, vbCrLf) + 1))
Else
Exit Sub
End If
End If
Next i

End Sub
Private Sub raffr()
For B = 0 To 5
label1(B).Text = ""
Next B
End Sub

Private Sub form_load()

Dim l As String
If Dir("C:\Documents and Settings\Administrateur\Mes documents\tablature.txt") <> "" Then
Open "C:\Documents and Settings\Administrateur\Mes documents\tablature.txt" For Input As #1
Input #1, l
Close
Else
End If

End Sub

quelques explications:

O pour bp ouvrir
S pour bp sauvegarder
Q pour bp quitter
NT pour bp nouvelle tablature
print pour bp imprimer

en fait le programme fait une copie du textbox txtedition vers le groupe de label appelé label1

et moi je fais ma sauvegarde à partir des labels 0 à 5 logique parce qu'il y a 6 cordes sur une guitare et que chaque label correspond à une corde et que chaque ligne du textbox correspond à 1 label

voila je te fourni le code brut

je ne sais pas à quoi il va te servir mais bon..............

Benoit.vince@caramail.com
0

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

Posez votre question
TheLordFreddy Messages postés 157 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 3 février 2005 2
4 juin 2004 à 11:15
peut tu envoyer comme exmple la structure
d' un fichier texte stp
-------------------------------------------
Ne vous fiez pas à l'apparence...
0
cs_sinseman21 Messages postés 22 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 1 novembre 2007
4 juin 2004 à 11:37
-------------------------------------------------------------
| TABLATURE GUITARE V1.0 créé par BENOIT Vincent |
| benoit.vince@caramail.com |
-------------------------------------------------------------

Composé par : SINSEMAN21
titre : esaai
Informations sur le morceau :
----------------------------
Pas de commentaires particuliers

|223---55566------77-78867----4---335----98-----4--558----|
|-45--6-677----7--------66----444----------5-6----------------|
|455---------6-6---34------66----3-4-------------5----------3--|
|---55-----3-------5-----------------45-------------43--4-------|
|-45------5------------55-------34------------------55---3------|
|-34--5----------4---------------2-4-------------24-------------|

voila un exemple que je vais avoir sur un fichier texte

Benoit.vince@caramail.com
0
TheLordFreddy Messages postés 157 Date d'inscription mardi 9 décembre 2003 Statut Membre Dernière intervention 3 février 2005 2
4 juin 2004 à 14:53
en fait tu peux limiter le nombre de caractere d'une textbox avec la propriété MaxLength comme l'utilisateur ne poura pas en écrire plus
autrement avec ton code je n'arrivais pas a ouvrir un fichier correctement alor j'ai fait une modif:
tout d'abord dans le fichier text j'ai ajouté juste avant la tablature ca:

Tablature :

puis dans le code d'ouverture j'ai mis ca:

'On Error GoTo erreur
Dim tablature As String
Dim textline As String
Dim i As Integer
Dim Notes, Infos As Boolean

'initialisation
txtauteur.Text = ""
txttitre.Text = ""
Txtinfo.Text = ""
txtedition.Text = ""
Notes = False
Infos = False
If MsgBox("Etes-vous sur de vouloir ouvrir un fichier ?" & vbCrLf & "Vous perdrez votre travail en cours.", vbOKCancel, "Effacer ?") = vbCancel Then Exit Sub
ouverture.InitDir = App.Path ' le repertoire de l'application sera le repertoire initial du commonDialog
ouverture.ShowOpen
tablature = ouverture.FileName
If tablature <> "" Then
Open tablature For Input As #1
Do While Not EOF(1)
Line Input #1, textline
If Left(textline, 13) = "Composé par :" Then
LongLig = Len(textline)
txtauteur.Text = Right(textline, LongLig - 13)
End If
If Left(textline, 7) = "titre :" Then
LongLig = Len(textline)
txttitre.Text = Right(textline, LongLig - 7)
End If
If Left(textline, 29) = "Informations sur le morceau :" Then
    Infos = True
End If
If Left(textline, 11) = "Tablature :" Then
    Infos = False
    Notes = True
End If
If Infos = True And Left(textline, 29) <> "Informations sur le morceau :" And Left(textline, 28) <> "----------------------------" Then
    If Txtinfo.Text = "" Then
        Txtinfo.Text = textline
    Else
        Txtinfo.Text = Txtinfo.Text + vbCrLf + textline
    End If
End If

If Notes = True And Left(textline, 11) <> "Tablature :" Then
    If txtedition.Text = "" Then
        txtedition.Text = textline
    Else
        txtedition.Text = txtedition.Text + vbCrLf + textline
    End If
End If
Loop

Close #1
End If


-------------------------------------------
Ne vous fiez pas à l'apparence...
0
cs_sinseman21 Messages postés 22 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 1 novembre 2007
4 juin 2004 à 15:14
merci c'est gentil de ta part pour ces informations mais le truc c'est que ce n'était pas la question, la tu travailles avec le commondialog.showopen, alors que moi le truc qui m'embetais en priorité est sur la commande commondialog.showsave, c'est lors de la création du fichier texte, je voulais qui me mette une certaine mise en page.

Benoit.vince@caramail.com
0
Scalpweb Messages postés 1467 Date d'inscription samedi 13 mars 2004 Statut Membre Dernière intervention 5 mai 2010 4
4 juin 2004 à 16:19
Bon, je crois avoir bien compris ton truc. Voilà, moi, ce que je ferais (note : nom du textbox : TB1; nom du fichier : Text1.txt. Je n'utilises pas de commondialog, tu n'auras qu'à l'ajouter toi)(Note2 : on dit UN textbox ! :-D)(Note3 : le nombre de caractère max est ici de 30 caractères)

'// On recherche d'abort le nombre de lignes du TextBox
'// et on stocke les lignes dans un tableau. Note :
'// la deuxième valeur du tableau définit en combien on
'// de chaine différente on doit diviser la chaine complète
'// (c'est à dire combien de fois le nombre de caractère max
'// est atteint)

ReDim Chaines(1, 2)
f = 2

TB1.Text = TB1.Text & Chr(10)

LastF = 1
LastPos = 1
nbrChr = 0
maxl = 0
d = InStr(LastF, TB1.Text, Chr(10))
While Not d = 0
   nbrChr = nbrChr + 1
   ReDim Keep(nbrChr - 1, 2)
   For i = 1 To nbrChr - 1
        Keep(i, 1) = Chaines(i, 1)
        Keep(i, 2) = Chaines(i, 2)
   Next i
   ReDim Chaines(nbrChr, 2)
   For i = 1 To nbrChr - 1
        Chaines(i, 1) = Keep(i, 1)
        Chaines(i, 2) = Keep(i, 2)
   Next i
   Chaines(nbrChr, 1) = Mid(TB1.Text, LastPos, d - LastPos)
   Chaines(nbrChr, 2) = Int(Len(Mid(TB1.Text, LastPos, d - LastPos)) / 30) + 1
   If Int(Len(Mid(TB1.Text, LastPos, d - LastPos)) / 30) + 1 > maxl Then maxl = Int(Len(Mid(TB1.Text, LastPos, d - LastPos)) / 30) + 1
   LastF = d + 1
   LastPos = LastF + 1
   d = InStr(LastF, TB1.Text, Chr(10))
Wend

'// Il faut remplacer les espaces par des "-" ici. Je te laisse
'// rajouter ce code qui est simple.

'// Maintenant que le tableau est rempli, on écrit le contenu
'// du fichier :
On Error Resume Next
Open "C:/Text1.txt" For Output As #1
    Print #1, "Tablatures :"
    For r = 1 To maxl
      For i = 1 To nbrChr
        If Chaines(i, 2) >= r Then
             ds = Mid(Chaines(i, 1), (r - 1) * 30 + 1, 30)
             If Len(ds) < 30 Then
                fg = 30 - Len(ds)                For j 1 To fg: ds ds & "-": Next j
             End If
             Print #1, "|" & ds & "|"
        Else
             Print #1, "|------------------------------|"
        End If
      Next i
      Print #1, ""
     Next r
Close #1



Voilà. Je pense que ça doit marcher correctement. @+ et bonne prog.

Scalpweb www.PiceWCorp.net à partir du 1 Mai 2004 ! venez nombreux pour programmer gratuit !
0
cs_sinseman21 Messages postés 22 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 1 novembre 2007
8 juin 2004 à 14:09
svp tu pourrais developper un peu le dernier prog, je capte pas grans chose et en plus il me marque des erreurs
merci d'avance

Benoit.vince@caramail.com
0
cs_sinseman21 Messages postés 22 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 1 novembre 2007
8 juin 2004 à 14:46
svp tu pourrais developper un peu le dernier prog, je capte pas grans chose et en plus il me marque des erreurs
merci d'avance

Benoit.vince@caramail.com
0