J’ai un problème de transformation de date extraite d’un ListIconGadget alimenté par un fichier texte avec tabulations.
Exemple du fichier à enregistrer au format ".txt" :
- 01/06/2001 VIREMENT PAR INTERNET 300,00
12/06/2001 Frais bancaires 72,12
15/06/2001 * COTISATION BOUQUET LIBERTE 12,12
J’arrive à formater correctement toutes les lignes sauf la dernière.
MYSTERE.
J’ai réussi à bidouiller quelque chose en isolant la dernière ligne, mais ce n’est pas terrible et j’aimerai comprendre d’où vient l’erreur.
Merci de votre aide.
Code :
Code : Tout sélectionner
Global Window_Main
Global Image_0, ListIcon_0, Button_Quitter, Button_Ouvrir_Txt
Procedure OpenWindow_Main(x = 0, y = 0, width = 600, height = 400)
Window_Main = OpenWindow(#PB_Any, x, y, width, height, "Convertir un fichier TXT en OFX", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ListIcon_0 = ListIconGadget(#PB_Any, 0, 0, 600, 350, "Date", 100, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
Button_Quitter = ButtonGadget(#PB_Any, 490, 360, 100, 25, "Quitter")
Button_Ouvrir_Txt = ButtonGadget(#PB_Any, 10, 360, 210, 25, "Ouvrir le fichier " + Chr(34) + "TXT" + Chr(34) + " à convertir")
AddGadgetColumn(ListIcon_0, 1, "Détail", 310)
AddGadgetColumn(ListIcon_0, 2, "Débit", 100)
AddGadgetColumn(ListIcon_0, 3, "Crédit", 100)
EndProcedure
#Separateur = Chr(9) ; tabulation
Procedure LireTxt()
; Chemin du fichier texte a convertir
Global CheminFichierTxt$ = OpenFileRequester("Sélectionner le fichier " + Chr(34) + ".TXT " + Chr(34) + " à convertir en " + Chr(34) + ".OFX" + Chr(34) +"", "D:\Mic\Documents\Banque\Ilona\Caisse d'epargne\Import relevés\Pdf et Txt a convertir\", "*.txt|*.txt", 0)
; nom du fichier sans extension
Global NomFichierTxt$ = GetFilePart(CheminFichierTxt$, #PB_FileSystem_NoExtension)
If CheminFichierTxt$
File = ReadFile(#PB_Any, CheminFichierTxt$)
If File
While Not Eof(File)
Line$ = ReadString(File)
Global Date$ = StringField(Line$, 1, #Separateur)
Detail$ = StringField(Line$, 2, #Separateur)
Debit$ = StringField(Line$, 3, #Separateur)
Credit$ = StringField(Line$, 4, #Separateur)
AddGadgetItem(ListIcon_0, 0, Date$ + Chr(10) + Detail$ + Chr(10) + Debit$ + Chr(10) + Credit$)
Wend
CloseFile(File)
Else
MessageRequester("Information","Impossible d'ouvrir le fichier!")
EndIf
EndIf
EndProcedure
Procedure Ecrire_Ofx()
Global NbLignesListicon_0.i = CountGadgetItems(ListIcon_0) ;Nb lignes
; =====================Transforme date en ofx=======================
date_fr_Start$ = GetGadgetItemText(ListIcon_0, NbLignesListicon_0-1, 0)
date_Ofx_Start$ = Right(date_fr_Start$, 4) + Mid(date_fr_Start$, 4, 2) + Left(date_fr_Start$, 2)
date_fr_End$ = GetGadgetItemText(ListIcon_0, 0, 0)
date_Ofx_End$ = Right(date_fr_End$, 4) + Mid(date_fr_End$, 4, 2) + Left(date_fr_End$, 2)
Debug date_fr_Start$ + "< Date de DEBUT du fichier texte au format 'Fr' ---------- Dernière ligne du listIcon"
Debug date_Ofx_Start$ + "<DTSTART> Date de DEBUT pour le format 'Ofx' ---------- normalement 'yyymmdd'"
Debug date_fr_End$ + " Date de FIN du fichier texte au format 'Fr' ---------- Première ligne du listIcon"
Debug date_Ofx_End$ + "<DTEND> Date de FIN pour le format 'Ofx' ---------- 'yyymmdd'. Cette ligne est CORRECTE."
Debug "Les autres lignes sont CORRECTES sauf la date de la dernière ligne '<DTEND>' qui devrait être au format 'yyyymmdd'"
For a = 0 To NbLignesListicon_0 -1
date_Ofx$ = Right(GetGadgetItemText(ListIcon_0, a, 0), 4) + Mid(GetGadgetItemText(ListIcon_0, a, 0), 4, 2) + Left(GetGadgetItemText(ListIcon_0, a, 0), 2)
Debug "<STMTTRN>" + Chr(13)
Debug "<DTPOSTED>" + date_Ofx$ + Chr(13)
Debug "<NAME>" + GetGadgetItemText(ListIcon_0, a, 1) + Chr(13)
Debug "<TRNAMT>" + "-" + GetGadgetItemText(ListIcon_0, a, 2) + Chr(13)
Debug "</STMTTRN>" + Chr(13)
Next a
EndProcedure
Procedure Window_Main_Events(event)
Select event
Case #PB_Event_CloseWindow
ProcedureReturn #False
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case Button_Ouvrir_Txt
LireTxt()
Ecrire_Ofx()
Case Button_Quitter
End
EndSelect
EndSelect
ProcedureReturn #True
EndProcedure
OpenWindow_Main()
Repeat
event = WaitWindowEvent()
Until Window_Main_Events(event) = #False