Couper un fichier texte et sauvegarder les portions de textes

Résolu
pactodev08 Messages postés 7 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 15 mars 2012 - 15 avril 2011 à 00:27
pactodev08 Messages postés 7 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 15 mars 2012 - 17 avril 2011 à 14:47
Bonjour,
je cherche une solution, pour découper un fichier texte de ce type de façon simple.
Puis ensuite sauvegarder ce qui ce trouve entre (exemple:"ams" et "***") en donnant pour extension à mon fichier sauvegarder le premier mot du bloc (donc ams) idem pour les autre bloc trouver.

Merci d'avance!

AMS
M_0001
1500
1000
500
1
ivoire
***
BLT
800
500
1
jaune
1
****

10 réponses

ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
15 avril 2011 à 08:32
Bonjour,

Je ne sais pas en quel langage tu veux ça (je connais mal ce forum), si c'est du vb6 ou vbNet je peux ?

Tu ne dis pas non plus ce que tu sais faire, faut-il simplement te montrer comment découper la chaîne, tu sauras faire les fichiers, ou tout te faire (ce qui n'est pas un problème) ?

Au plaisir, cordialement.

Joe.
3
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
16 avril 2011 à 17:43
Le but du jeu étant de développer, tu commences par écrire ton code, à le tester, à regarder éventuellement pourquoi il ne marche pas et si tu ne trouves pas, alors là, mais là seulement tu viens nous trouver.

Sinon tu n'apprendras jamais.


Calade
3
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
15 avril 2011 à 13:00
Bonjour,

Si ton fichier texte n'est pas trop gros et que tu connais le/les caractère(s) (retour charriot ?), regarde la fonction Split.

Après il te suffira de faire un for...Next dans ton tableau.


Calade
0
pactodev08 Messages postés 7 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 15 mars 2012
16 avril 2011 à 16:07
bonjour,
Je ne sais pas faire car je débute en programmation vbnet.
Merci d'avance.
0

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

Posez votre question
Calade Messages postés 1207 Date d'inscription dimanche 20 avril 2003 Statut Membre Dernière intervention 4 juin 2016 10
16 avril 2011 à 16:11
C'est tout simple.
Tu appuies sur F1 et dans la zone de saisie tu tapes "split" (sans les guillemets évidemment).


Calade
0
pactodev08 Messages postés 7 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 15 mars 2012
16 avril 2011 à 17:04
bonjour,
Donne moi un exemple car je comprend mieux avec un exemple
merci d'avance.
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
16 avril 2011 à 17:13
Bonjour,

Ah tu ne connais pas du tout, mais alors c'est trop compliqué, y a un paquet de boulot dans ce que tu veux faire, au moins 30 minutes de code, et si tu ne connais absolument pas tu ne va pas comprendre, faudrait déjà commentcer par apprendre la manipulation des fichiers.

Découper un fichier texte, il existe ou pas, on ne sait pas.
Tester sa présence, ou le créer et le charger
Le lire, le découpe
Créer d'autres fichier avec certains datas du premier, c'est pas difficile mais y a du boulot là !

Je te ferais ça quand j'aurais un trou (temporel)

Ton fichier : il existe ou pas, et il contient quoi ?

Dans cette attente, au plaisir.

Cordialement.
0
pactodev08 Messages postés 7 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 15 mars 2012
16 avril 2011 à 17:42
bonjour,
Mon fichier existe car il peut être de différente taille.
Ce sont des fichiers de commandes clients.
Selon les articles il arrive dans des ordres différent.
Il me faut absolument les séparés.
Encore une petite chose si mon fichier contient plusieurs fois (DRS)il me faut récupéré l'ensemble dans le même fichier
Donc sauvegarder un fichier: toto.drs avec ce contenu. etc...

Exemple:
M_0001
1500
1000
500
1
ivoire
***
M_0002
1500
1000
500
1
ivoire
***
M_0003
1500
1000
500
1
ivoire
***
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
17 avril 2011 à 06:59
Bonjour,

Voici le code testé :

' coupeFichier
Option Explicit On
Public Class Form1
'
' OBJETS A METTRE =
' form1 + button1 + listbox1 + textbox1
' Mettre le nom du fichier d'origine dans le TextBox1
'
Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
ListBox1.Sorted = False
ListBox1.Items.Clear()
Try ' ouvre fichier
Dim p As New System.IO.StreamReader(CStr(My.Application.Info.DirectoryPath & "" & TextBox1.Text))
While p.Peek() >= 0 ' lecture
ListBox1.Items.Add(Trim(p.ReadLine()))
End While
p.Close()
Catch ex As Exception
Dim a As String
a = "Fichier introuvable : " & TextBox1.Text & vbLf & vbLf
a = a & "Le fichier doit se trouver dans le répertoire bin\debug\ de votre application" & vbLf & vbLf
a = a & "Remédier, saisir le bon nom dans le textbox avant de valider" & vbLf
MsgBox(a, vbExclamation)
TextBox1.Focus()
Exit Sub
If ListBox1.Items.Count < 2 Then
MsgBox("Fichier vide " & vbLf, vbExclamation)
TextBox1.Focus()
Exit Sub
End If
End Try
End Sub

Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim i As Integer
Dim j As Integer ' création des fichiers
For i = 0 To ListBox1.Items.Count - 1 ' fichier sauf nom "DRS"
Select Case ListBox1.Items(i)
Case Is <> "DRS"
Dim p As New System.IO.StreamWriter(CStr(My.Application.Info.DirectoryPath & "" & ListBox1.Items(i) & ".txt"))
For j = i + 1 To ListBox1.Items.Count - 1
p.WriteLine(ListBox1.Items(j))
If ListBox1.Items(j) = "***" Then
p.Close()
i = j
Exit For
End If
Next j
Case Is = "DRS"
For j = i + 1 To ListBox1.Items.Count - 1
If ListBox1.Items(j) = "***" Then
i = j
Exit For
End If
Next j
End Select
Next i
' fichier seulement de nom "DRS"
Dim q As New System.IO.StreamWriter(CStr(My.Application.Info.DirectoryPath & "\DRS.txt"))
Dim ecrit As Boolean = False
For i = 0 To ListBox1.Items.Count - 1
If ListBox1.Items(i) "DRS" Then ecrit True
If ecrit = True Then q.WriteLine(ListBox1.Items(i))
If ListBox1.Items(i) "***" Then ecrit False
Next i
q.Close()
Dim lgr As Integer = FileLen(My.Application.Info.DirectoryPath & "\DRS.txt")
If lgr < 7 Then Kill(My.Application.Info.DirectoryPath & "\DRS.txt")
MsgBox("Créations de fichiers terminée " & vbLf, vbExclamation)
End
End Sub
End Class

Cordialement.

Joe.
0
pactodev08 Messages postés 7 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 15 mars 2012
17 avril 2011 à 14:47
bonjour Joe,

Merci pour ton aide.
Je débute en vbnet, mais je compte bien apprendre.

Cordialement,
PM
0
Rejoignez-nous