'(code qui sera exécuté seulement si on tombe dans le bon "scénario"... n'oublie pas les If) pos = Instr(1, P, " ") If pos=0 Then Goto beurk 'Err est déjà pris, donc... pos = Instr(pos, P, " ") If pos=0 Then Goto beurk P = Mid$(P, pos) 'P est désormais débarrassé de "DU xxxx" '[...] beurk: MsgBox "Une erreur est survenue lors du parsing du fichier .qif à la ligne n°" & numligne
pos = Instr(pos+1, P, " ") 'sinon ça sera d'office 1
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionSub BNP() n = 50 For k = 1 To n '(code qui sera exécuté seulement si on tombe dans le bon "scénario"... n'oublie pas les If) pos = InStr(k, P, " ") If pos = 0 Then GoTo beurk 'Err est déjà pris, donc... pos = InStr(pos, P, " ") If pos = 0 Then GoTo beurk P = Mid$(P, pos) 'P est désormais débarrassé de "DU xxxx" beurk: 'j'ai enlevé la Msgbox Next k End Sub
Option Explicit Dim k As Integer Dim pos As Integer Dim P As String Dim n As Integer
D08/08/13 T17.02 MREMBOURST CB[tout court] PLEROY MER ^ D08/08/13 T-771.63 MVIREMENT FAVEUR TIERS VR. PERMANENT LOYER xxxx/xxxx AC PVR. PERMANENT LOYER xxxx/xxxxx ^ D08/08/13 T-57.71 MFACTURE CARTE[tout court] PCARREFOUR LORIE LORIEN ^
Dim liststr() As String Dim outstr() As String Public Sub ReadFile(path As String) 'lis le fichier Dim sFileText As String Dim iFileNo As Integer Dim count As Integer Dim line As Integer count = 0 line = 2 iFileNo = FreeFile Open path For Input As #iFileNo Do While Not EOF(iFileNo) Input #iFileNo, sFileText ReDim Preserve liststr(count) liststr(count) = sFileText count = count + 1 Loop Close #iFileNo End Sub Public Sub Proceed() Dim iter As Integer Dim iter1 As Integer Dim var() As String Dim flag As Boolean Dim word As String flag = False For iter = 0 To UBound(liststr) var = Split(liststr(iter), " ") ReDim Preserve outstr(iter) outstr(iter) = liststr(iter) If flag Then outstr(iter) = Replace(liststr(iter), word, "") flag = False End If If InStr(1, liststr(iter), "M REMBOURST CB") Then word = "" word = word & var(0) & var(1) & " " & var(2) & " " & var(3) & " " & var(4) outstr(iter) = word End If If InStr(1, liststr(iter), "MFACTURE CARTE") Then word = "" flag = True word = var(2) & " " & var(3) End If If InStr(1, liststr(iter), "PREMBOURST CB") Then word = "" word = "P" & var(4) & " " & var(5) outstr(iter) = word End If If InStr(1, liststr(iter), "PFACTURE CARTE") Then ' word = "" End If Next iter End Sub
Private Sub Proceed() Dim iter As Integer Dim iter1 As Integer Dim var() As String Dim flag As Boolean Dim word As String flag = False For iter = 0 To UBound(liststr) var = Split(liststr(iter), " ") ReDim Preserve outstr(iter) outstr(iter) = liststr(iter) If flag Then outstr(iter) = "P" & Replace(liststr(iter), var(0) & " " & var(1) & " ", "") flag = False End If If InStr(1, liststr(iter), "M REMBOURST CB") Then word = "" word = word & var(0) & var(1) & " " & var(2) outstr(iter) = word End If If InStr(1, liststr(iter), "MFACTURE CARTE") Then word = "" flag = True word = var(0) & " " & var(1) outstr(iter) = word End If If InStr(1, liststr(iter), "PREMBOURST CB") Then word = "" word = "P" & var(4) & " " & var(5) outstr(iter) = word End If Next iter End Sub
ReadFile (""d:\E2273211.qif"")
Dim liststr() As String Dim outstr() As String Private Sub ReadFile(path As String) 'lis le fichier Dim sFileText As String Dim iFileNo As Integer Dim count As Integer Dim line As Integer count = 0 line = 2 iFileNo = FreeFile Open path For Input As #iFileNo Do While Not EOF(iFileNo) Input #iFileNo, sFileText ReDim Preserve liststr(count) liststr(count) = sFileText count = count + 1 Loop Close #iFileNo End Sub Private Sub Proceed() Dim iter As Integer Dim iter1 As Integer Dim var() As String Dim flag As Boolean Dim word As String flag = False For iter = 0 To UBound(liststr) var = Split(liststr(iter), " ") ReDim Preserve outstr(iter) outstr(iter) = liststr(iter) If flag Then outstr(iter) = "P" & Replace(liststr(iter), var(0) & " " & var(1) & " ", "") flag = False End If If InStr(1, liststr(iter), "M REMBOURST CB") Then word = "" word = word & var(0) & var(1) & " " & var(2) outstr(iter) = word End If If InStr(1, liststr(iter), "MFACTURE CARTE") Then word = "" flag = True word = var(0) & " " & var(1) outstr(iter) = word End If If InStr(1, liststr(iter), "PREMBOURST CB") Then word = "" word = "P" & var(4) & " " & var(5) outstr(iter) = word End If Next iter End Sub Sub test() ReadFile ("d:\E2273211.qif") Proceed 'change le nom du fichier s'il faut WritToQif "d:\E2273211A.qif" End Sub Private Sub WritToQif(path As String) Dim iFileNo As Integer Dim iter As Integer iFileNo = FreeFile 'open the file for writing Open path For Output As #iFileNo For iter = 0 To UBound(outstr) Write #iFileNo, outstr(iter) Next iter Close #iFileNo End Sub
Dim liststr() As String Dim outstr() As String Private Sub ReadFile(path As String) 'lis le fichier Dim sFileText As String Dim iFileNo As Integer Dim count As Integer Dim line As Integer Dim word As String count = 0 line = 2 iFileNo = FreeFile Open path For Input As #iFileNo Do While Not EOF(iFileNo) Input #iFileNo, sFileText ReDim Preserve liststr(count) p = InStr(1, sFileText, " ") If p > 1 Then word = Mid(sFileText, p, InStrRev(sFileText, " ", Len(sFileText))) sFileText = Replace(sFileText, word, " ") End If liststr(count) = sFileText count = count + 1 Loop Close #iFileNo End Sub Private Sub Proceed() Dim iter As Integer Dim iter1 As Integer Dim var() As String Dim flag1 As Boolean Dim flag2 As Boolean Dim word As String flag = False iter = 0 For iter = 0 To UBound(liststr) var = Split(liststr(iter), " ") ReDim Preserve outstr(iter) outstr(iter) = liststr(iter) If flag1 Then outstr(iter) = "P" & Replace(liststr(iter), var(0) & " " & var(1) & " ", "") flag1 = False End If If flag2 Then st = "P" & Replace(liststr(iter), var(0) & " " & var(1) & " " & var(2) & " ", "") outstr(iter) = st flag2 = False End If If InStr(1, liststr(iter), "M REMBOURST CB") Then outstr(iter) = var(0) & var(1) & " " & var(2) End If If InStr(1, liststr(iter), "MRETRAIT DAB") Then outstr(iter) = var(0) & " " & var(1) flag1 = True End If If InStr(1, liststr(iter), "MPRELEVEMENT") Then outstr(iter) = var(0) End If If InStr(1, liststr(iter), "MVIREMENT RECU TIERS") Then outstr(iter) = var(0) & " " & var(1) & " " & var(2) End If If InStr(1, liststr(iter), "MVIREMENT FAVEUR TIERS") Then outstr(iter) = var(0) & " " & var(1) & " " & var(2) flag1 = True End If If InStr(1, liststr(iter), "MPRLV EUROPEEN") Then outstr(iter) = "MPRELEVEMENT" End If If InStr(1, liststr(iter), "MCHEQUE N°") Then outstr(iter) = var(0) flag1 = True End If If InStr(1, liststr(iter), "MFACTURE CARTE") Then flag1 = True outstr(iter) = var(0) & " " & var(1) End If If InStr(1, liststr(iter), "MVRST ESPECES") Then word = var(0) & " " & var(1) & " " & var(2) word = Replace(word, var(0), "MVERSEMENT") outstr(iter) = word flag1 = True End If If InStr(1, liststr(iter), "MVIR EUROPEEN") Then outstr(iter) = "MVIREMENT RECU TIERS" End If If InStr(1, liststr(iter), "PREMBOURST CB") Then word = "P" & var(4) & " " & var(5) outstr(iter) = word End If Next iter End Sub Sub test() ReadFile ("d:\E2273211.qif") Proceed 'change le nom du fichier s'il faut WritToQif "d:\E2273211A.qif" End Sub Private Sub WritToQif(path As String) Dim iFileNo As Integer Dim iter As Integer iFileNo = FreeFile 'open the file for writing Open path For Output As #iFileNo For iter = 0 To UBound(outstr) Print #iFileNo, outstr(iter) Next iter Close #iFileNo End Sub
14 août 2013 à 23:59
En effet, il n'était pas très cohérent. En appliquant ses "consignes", je suis arrivé aux données postées en #9 et elles me semblent déjà plus "logiques"...