Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionPrivate Sub Proceed(ByVal pathfilein As String, ByVal pathfileout As String)
Dim listin As New List(Of String)
Dim listout As New List(Of String)
Dim items() As String
Dim agencynumber As String = String.Empty
Dim csvstring As String = String.Empty
Try
listin = System.IO.File.ReadAllLines(pathfilein).ToList
For Each item As String In listin
items = item.Split(New Char() {}, StringSplitOptions.RemoveEmptyEntries)
If items.Count = 1 Then
agencynumber = items(0).Trim
Else
csvstring = agencynumber & "|" & items(1) & "|" & items(2)
listout.Add(csvstring)
End If
Next
IO.File.WriteAllLines(pathfileout, listout.ToArray)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Proceed(Application.StartupPath & "\text1.txt", Application.StartupPath & "\text1.csv")
agence 1( à moins que son premier message ne soit pas exact quant au fichier concerné)
Billet Nom ============> celle-là
1 12435363 XXXXX
...
Dim FF As Integer: FF = FreeFile--
Open "D:\cs_mohellebi.txt" For Input As #FF
strtext = Input(LOF(FF), #FF) ' ======>> je "ramasse" tout le contyenu du fichier
Close #FF
' on ne sait pas (tu n'as pas répondu) si séparés par des tab, des espaces ou conjugaison des deux ===>> et donc :
strtext = Replace(strtext, vbTab, " ") '======>> j'enlève les tabulations éventuelles
Do While InStr(strtext, " ")
strtext = Replace(strtext, " ", " ") '===>> je transforme en un seul espace les chaines de + d'un espace
Loop
toto = Split(strtext, vbCrLf) ' ==========>> j'éclate par lignes (séparées par un retour-charriot)
For i = 0 To UBound(toto)
If Not IsNumeric(Left(Trim(toto(i)), 1)) Then ' si le trim de l'article n'est pas numérique
toto(i) = "#" ' ===>> je mets "#"
Else
toto(i) = Trim(toto(i)) ' ===>>> sinon, le le "trim"
End If
Next
' ne me reste plus qu'à supprimer du "join" (avec vbcrlf) de cet array
' toutes les lignes #+vbcrlf
' et à y remplacer les espaces par un "|"
strtext = Replace(Replace(Join(toto, vbCrLf), "#" & vbCrLf, ""), " ", "|")
FF = FreeFile
' puis j'écris dans le fichier
Open "D:\cs_mohellebi.txt" For Output As #FF
Print #FF, strtext;
Close #FF
Dim FF As Integer, i As Long, num As Integer, strtext As String, pos As Integer, toto
FF = FreeFile
Open "D:\cs_mohellebi.txt" For Input As #FF
strtext = Input(LOF(FF), #FF) ' ======>> je "ramasse" tout le contyenu du fichier
Close #FF
' on ne sait pas (tu n'as pas répondu) si séparés par des tab, des espaces ou conjugaison des deux ===>> et donc :
strtext = Replace(strtext, vbTab, " ") '======>> j'enlève les tabulations éventuelles
Do While InStr(strtext, " ")
strtext = Replace(strtext, " ", " ") '===>> je transforme en un seul espace les chaines de + d'un espace
Loop
toto = Split(strtext, vbCrLf) ' ==========>> j'éclate par lignes (séparées par un retour-charriot)
For i = 0 To UBound(toto) - 1
toto(i) = Trim(toto(i)) ' ===>> j'enlève tous les espaces devant etr derrière l'article
If Not IsNumeric(Left(toto(i), 1)) Then '=====>> si ne commence pas par un numérique
If Left(toto(i), 7) = "agence " Then ' ===>>> si ligne dit "agence"
num = Val(Mid(toto(i), 8)) ' === j'extrais le n° d'agence
toto(i) = "#" ' ===>> je mets "#"
Else '===>> juste pour le cas où tu aurais, en plus, des parasites
toto(i) = "#" ' ===>> je mets "#"
End If
Else
pos = InStr(toto(i), " ") '====>> position du 1er espace de la ligne
Mid(toto(i), 1, pos) = num ' ===>> je remplace par le N° d'agence
End If
Next
' ne me reste plus qu'à supprimer du "join" (avec vbcrlf) de cet array
' toutes les lignes #+vbcrlf
' et à y remplacer les espaces par un "|"
strtext = Replace(Replace(Join(toto, vbCrLf), "#" & vbCrLf, ""), " ", "|")
FF = FreeFile
' puis j'écris dans le fichier
Open "D:\cs_mohellebi1.txt" For Output As #FF
Print #FF, strtext;
Close #FF
Private Sub Proceed(ByVal pathfilein As String, ByVal pathfileout As String)
Dim listin As New List(Of String)
Dim listout As New List(Of String)
Dim items() As String
Dim agencynumber As String = String.Empty
Dim csvstring As String = String.Empty
Try
listin = System.IO.File.ReadAllLines(pathfilein).ToList
For Each item As String In listin
'on retire tous les espaces et les tab entre les strings
items = item.Split(New Char() {}, StringSplitOptions.RemoveEmptyEntries)
If items(0).ToLower.StartsWith("agence") Then
agencynumber = items(1).Trim
ElseIf items(0).ToLower <> ("billet") Then
csvstring = agencynumber & "|" & items(1) & "|" & items(2)
listout.Add(csvstring)
End If
Next
IO.File.WriteAllLines(pathfileout, listout.ToArray)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub
Private Sub Proceed(ByVal pathfilein As String, ByVal pathfileout As String)
'pathfilein est le chemin de ton fichier txt
'pathfileout est le chemin de ton fichier csv
Dim listin As New List(Of String)
Dim listout As New List(Of String)
Dim items() As String
Dim agencynumber As String = String.Empty
Dim csvstring As String = String.Empty
Try
'on lit toutes les lignes du fichier txt dans listin
listin = System.IO.File.ReadAllLines(pathfilein).ToList
'on va traiter chaque ligne de listin
For Each item As String In listin
'on découpe la ligne en plusieurs string en retirant
'les espaces
items = item.Split(New Char() {}, StringSplitOptions.RemoveEmptyEntries)
'on verifie si le premier mot = agence
If items(0) = "agence" Then
'si oui on garde le numéro d'agence dans 'agencynumber
agencynumber = items(1).Trim
'autrement si la ligne ne commence pas par billet
'ex 2 43537376 YYYYYY
ElseIf items(0) <> "billet" Then
' on va former cscstring avec le numéro d'agence '(agencynumber)
' |43537376|YYYYYY
csvstring = agencynumber & "|" & items(1) & "|" & items(2)
'on ajoute csvstring à la liste listout
listout.Add(csvstring)
End If
Next
'on copie listout dans le fichier csv
IO.File.WriteAllLines(pathfileout, listout.ToArray)
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try
End Sub