PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2025 → Lire CSV
Lire CSV
Started by Jean-Michel, May, 03 2025 10:02 AM - 14 replies
Registered member
855 messages
Posted on May, 03 2025 - 10:02 AM
Bonjour,
J'ai un fichier csv qui vient de je ne sais pas ou.
Je l'ouvre avec Excel :




Je l'ouvre avec le bloc note Notepad :




Je le lis avec Windev :








Une idee ?
Merci

--
Synchronize Systems International LTD
Développement d'outils de gestion

Environnements AS400 – Windows
Langages GAP III – CL – Visual Basic - Visual Adélia - Adélia - Windev - Windev Mobile

Bangkok / Pattaya
Registered member
3,650 messages
Posted on May, 03 2025 - 11:20 AM
Salut
Je suppose que ton projet est en unicode vu que tu es en Thaïlande
Donc j'aurais précisé que le sRes est une chaîne ANSI
Et j'aurais plutôt utiliser fChargeTexte
Registered member
855 messages
Posted on May, 03 2025 - 2:54 PM
Bonsoir Popoy,
Oui mon projet est en unicode mais la precision en AINSI que j'avais teste ne me donne que des "?"




Par contre, je n'avais pas pense au fchargetexte ! Merci a toi, il ne me reste plus a le lire par RC




Merci Popoy !!

--
Synchronize Systems International LTD
Développement d'outils de gestion

Environnements AS400 – Windows
Langages GAP III – CL – Visual Basic - Visual Adélia - Adélia - Windev - Windev Mobile

Bangkok / Pattaya
Registered member
2,211 messages
Posted on May, 03 2025 - 7:48 PM
Bonjour Jean-Michel,

De nos jours ... :-) les logiciels sont plus intelligents :
- ils ont plus d'options,
- ils s'adaptent à l'environnement (langue par exemple).

Notepad a beaucoup progressé : il interprète le texte lu et indique dans une case de la barre de message le format de fichier (non visible sur ta copie d'écran).
Peut-être une piste pour savoir comment lire le fichier en WinDev avec flitLigne (même si fChargeTexte est bien meilleur) ?

--
Bon dev,
Jean-Pierre
Registered member
10 messages
Posted on June, 09 2025 - 7:32 PM
Apparemment avec mon code, j'enregistre uniquement la dernière ligne...
Registered member
905 messages
Posted on June, 09 2025 - 10:01 PM
bonjour,
Benat64, que faut-il comprendre !!!

Vérifiez éventuellement que les sauts de lignes de votre fichier ne soient pas des LF. Vous pouvez vérifier avec Notepad++ avec l'option "Afficher tous les caractères".
si ce sont des LF (Line Feed), on peut lire chaque ligne avec :

POUR TOUT CHAÎNE sLigne DE sContenuFichier SÉPARÉE PAR Caract(10).

Sinon, il faut remplacer les LF par des CRLF dans le fichier.

Cdlt
Posted on June, 10 2025 - 12:31 PM
Cédric_34 a écrit :
bonjour,
Benat64, que faut-il comprendre !!!

Vérifiez éventuellement que les sauts de lignes de votre fichier ne soient pas des LF. Vous pouvez vérifier avec Notepad++ avec l'option "Afficher tous les caractères".
si ce sont des LF (Line Feed), on peut lire chaque ligne avec :

POUR TOUT CHAÎNE sLigne DE sContenuFichier SÉPARÉE PAR Caract(10).

Sinon, il faut remplacer les LF par des CRLF dans le fichier.

Cdlt


Bonjour Cédric_34,
voici mon code :
SI sJournal = "Carrefour Bque" ALORS
MaChaîne = UTF8VersChaîne(fLitLigne(gnFic)) //on lit une ligne
SI gnFic <> -1 ALORS
POUR TOUTE chaîne MaChaîne de gnFic SEPAREE PAR Caract(10)
nUnité = 0
Import.Journal = sJournal
Import.date = ChaîneVersDate(ExtraitChaîne(MaChaîne,1,";",DepuisDébut))
Import.Déscription = ExtraitChaîne(MaChaîne,2,";",DepuisDébut)
nUnité = Droite(ExtraitChaîne(MaChaîne,3,";",DepuisDébut),10)
SI nUnité < 0 ALORS
Import.Débit = -nUnité
Import.Crédit = 0
SINON
Import.Crédit = nUnité
Import.Débit = 0
FIN
HAjoute(Import)
FIN
FIN
fFerme(gnFic)
FIN


le fichier à lire est le suivant :

"Nom : ";"MARIE LANDRE"
"Numéro Carte Pass : ";50003327171100

Date;Libellé;Montant;Mode;N°Carte
;;;;
05/06/2025;"PRELEVE SUR VOTRE COMPTE BANCAIRE BORDEAUX";182,00;Crédit;•0000
30/05/2025;"PRELEV. ACHATS DIFF. SUR CPTE BANCAIRE";-829,01;Différé;•0000
14/05/2025;"ACHAT MARKET URT 196 1000";-23,80;Différé;•9976
07/05/2025;"ACHAT GARANTIES PASS";-2,50;Différé;•0000
05/05/2025;"ACHAT PAIN FL 8 03/05 1813";-8,35;Différé;•9976
05/05/2025;"PRELEVE SUR VOTRE COMPTE BANCAIRE BORDEAUX";182,00;Crédit;•0000
02/05/2025;"ACHAT GEMO 15 30/04 1637";-15,98;Différé;•9976
02/05/2025;"ACHAT INTERMA 44 30/04 0946";-44,62;Différé;•9976
02/05/2025;"ACHAT DELICES 4 30/04 1800";-4,05;Différé;•9976
02/05/2025;"ACHAT Action 17 30/04 1722";-17,68;Différé;•9976
30/04/2025;"ACHAT MARKET URT 196 1000";-53,59;Différé;•9976
28/04/2025;"ACHAT MARKET URT 196 1207";-39,54;Différé;•9976
28/04/2025;"ACHAT MARKET URT 196 1200";-32,48;Différé;•9976
28/04/2025;"ACHAT MARKET URT 196 0954";-29,62;Différé;•9976
25/04/2025;"ACHAT MARKET URT 196 1146";-45,49;Différé;•9976
25/04/2025;"ACHAT E.LECLE 126 24/04 1156";-126,95;Différé;•9976
25/04/2025;"ACHAT KUBATA 19 24/04 2001";-19,00;Différé;•9976
25/04/2025;"ACHAT JACQUES 9 24/04 1337";-9,00;Différé;•9976
25/04/2025;"ACHAT SELARL 49 24/04 1031";-49,04;Différé;•9976
25/04/2025;"ACHAT BIHOTZA 30 24/04 2014";-30,60;Différé;•9976
25/04/2025;"ACHAT DECATHL 14 24/04 1049";-14,99;Différé;•9976
25/04/2025;"ACHAT ESAN 41 24/04 1321";-41,80;Différé;•9976
23/04/2025;"ACHAT MARKET URT 196 1025";-56,21;Différé;•9976
23/04/2025;"ACHAT BOULANG 11 22/04 1224";-11,80;Différé;•9976
30/04/2025;"PRELEV. ACHATS DIFF. SUR CPTE BANCAIRE";-617,90;Différé;•0000
22/04/2025;"ACHAT MARKET URT 196 1215";-27,32;Différé;•9976
22/04/2025;"ACHAT FLUIDE GLACIAL 4 HS 1 NV";-19,90;Différé;•0000
22/04/2025;"ACHAT MARKET URT 196 0946";-68,64;Différé;•9976
22/04/2025;"ACHAT DELICES 28 20/04 1736";-28,90;Différé;•9976
19/04/2025;"ACHAT MARKET URT 196 1629";-79,71;Différé;•9976
15/04/2025;"ACHAT MARKET URT 196 1656";-14,00;Différé;•9976
10/04/2025;"ACHAT GARANTIES PASS";-2,50;Différé;•0000
05/04/2025;"PRELEVE SUR VOTRE COMPTE BANCAIRE BORDEAUX";182,00;Crédit;•0000
31/03/2025;"ACHAT MARKET URT 196 0945";-23,09;Différé;•9976
31/03/2025;"ACHAT BOULANG 10 30/03 1201";-10,80;Différé;•9976
31/03/2025;"ACHAT E.LECLE 50 29/03 1452";-50,50;Différé;•9976
28/03/2025;"ACHAT MARKET URT 196 1234";-34,06;Différé;•9976
27/03/2025;"ACHAT MARKET URT 196 1152";-61,70;Différé;•9976
27/03/2025;"ACHAT MARKET URT 196 1040";-38,27;Différé;•9976
27/03/2025;"ACHAT BOULANG 7 26/03 1048";-7,65;Différé;•9976

et rien à faire, ça ne veut pas !
Registered member
10 messages
Posted on June, 10 2025 - 12:41 PM
Il y à des erreurs dan ce que que j'ai envoyé précédemment...
voici mon code (qui ne fonctionne pas)
SI sJournal = "Carrefour Bque" ALORS
MaChaîne = fLitLigne(gnFic) //on lit une ligne
SI gnFic <> -1 ALORS
POUR TOUTE CHAÎNE MaChaîne DE gnFic SEPAREE PAR Caract(10)
nUnité = 0
Import.Journal = sJournal
Import.date = ChaîneVersDate(ExtraitChaîne(MaChaîne,1,";",DepuisDébut))
Import.Déscription = ExtraitChaîne(MaChaîne,2,";",DepuisDébut)
nUnité = Droite(ExtraitChaîne(MaChaîne,3,";",DepuisDébut),10)
SI nUnité < 0 ALORS
Import.Débit = -nUnité
Import.Crédit = 0
SINON
Import.Crédit = nUnité
Import.Débit = 0
FIN
FIN
FIN
fFerme(gnFic)
FIN
FIN
Registered member
10 messages
Posted on June, 10 2025 - 12:43 PM
Le fichier traité est les suivant :

"Nom : ";"MARIE LANDRE"
"Numéro Carte Pass : ";50003327171100

Date;Libellé;Montant;Mode;N°Carte
;;;;
05/06/2025;"PRELEVE SUR VOTRE COMPTE BANCAIRE BORDEAUX";182,00;Crédit;•0000
30/05/2025;"PRELEV. ACHATS DIFF. SUR CPTE BANCAIRE";-829,01;Différé;•0000
14/05/2025;"ACHAT MARKET URT 196 1000";-23,80;Différé;•9976
07/05/2025;"ACHAT GARANTIES PASS";-2,50;Différé;•0000
05/05/2025;"ACHAT PAIN FL 8 03/05 1813";-8,35;Différé;•9976
05/05/2025;"PRELEVE SUR VOTRE COMPTE BANCAIRE BORDEAUX";182,00;Crédit;•0000
02/05/2025;"ACHAT GEMO 15 30/04 1637";-15,98;Différé;•9976
02/05/2025;"ACHAT INTERMA 44 30/04 0946";-44,62;Différé;•9976
02/05/2025;"ACHAT DELICES 4 30/04 1800";-4,05;Différé;•9976
02/05/2025;"ACHAT Action 17 30/04 1722";-17,68;Différé;•9976
30/04/2025;"ACHAT MARKET URT 196 1000";-53,59;Différé;•9976
28/04/2025;"ACHAT MARKET URT 196 1207";-39,54;Différé;•9976
28/04/2025;"ACHAT MARKET URT 196 1200";-32,48;Différé;•9976
28/04/2025;"ACHAT MARKET URT 196 0954";-29,62;Différé;•9976
25/04/2025;"ACHAT MARKET URT 196 1146";-45,49;Différé;•9976
25/04/2025;"ACHAT E.LECLE 126 24/04 1156";-126,95;Différé;•9976
25/04/2025;"ACHAT KUBATA 19 24/04 2001";-19,00;Différé;•9976
25/04/2025;"ACHAT JACQUES 9 24/04 1337";-9,00;Différé;•9976
25/04/2025;"ACHAT SELARL 49 24/04 1031";-49,04;Différé;•9976
25/04/2025;"ACHAT BIHOTZA 30 24/04 2014";-30,60;Différé;•9976
25/04/2025;"ACHAT DECATHL 14 24/04 1049";-14,99;Différé;•9976
25/04/2025;"ACHAT ESAN 41 24/04 1321";-41,80;Différé;•9976
23/04/2025;"ACHAT MARKET URT 196 1025";-56,21;Différé;•9976
23/04/2025;"ACHAT BOULANG 11 22/04 1224";-11,80;Différé;•9976
30/04/2025;"PRELEV. ACHATS DIFF. SUR CPTE BANCAIRE";-617,90;Différé;•0000
22/04/2025;"ACHAT MARKET URT 196 1215";-27,32;Différé;•9976
22/04/2025;"ACHAT FLUIDE GLACIAL 4 HS 1 NV";-19,90;Différé;•0000
22/04/2025;"ACHAT MARKET URT 196 0946";-68,64;Différé;•9976
22/04/2025;"ACHAT DELICES 28 20/04 1736";-28,90;Différé;•9976
19/04/2025;"ACHAT MARKET URT 196 1629";-79,71;Différé;•9976
15/04/2025;"ACHAT MARKET URT 196 1656";-14,00;Différé;•9976
10/04/2025;"ACHAT GARANTIES PASS";-2,50;Différé;•0000
05/04/2025;"PRELEVE SUR VOTRE COMPTE BANCAIRE BORDEAUX";182,00;Crédit;•0000
31/03/2025;"ACHAT MARKET URT 196 0945";-23,09;Différé;•9976
31/03/2025;"ACHAT BOULANG 10 30/03 1201";-10,80;Différé;•9976
31/03/2025;"ACHAT E.LECLE 50 29/03 1452";-50,50;Différé;•9976
28/03/2025;"ACHAT MARKET URT 196 1234";-34,06;Différé;•9976
27/03/2025;"ACHAT MARKET URT 196 1152";-61,70;Différé;•9976
27/03/2025;"ACHAT MARKET URT 196 1040";-38,27;Différé;•9976
27/03/2025;"ACHAT BOULANG 7 26/03 1048";-7,65;Différé;•9976
Registered member
905 messages
Posted on June, 10 2025 - 12:47 PM
Bonjour,
Vous faites un fLitLigne puis un "pour toute chaine", ça ne peut pas fonctionner :
voici un exemple de code :

nMonfichierOuvert est une entier
sLigneLue est une chaîne
nMonfichierOuvert = fOuvre("C:\Temp\FichierLF.TXT")

SI nMonfichierOuvert <> - 1 ALORS
sLigneLue = fLitLigne(nMonfichierOuvert, Caract(10))
POUR i = 1 _À_ 5
Trace(ExtraitChaîne(sLigneLue,i,";"))
sLigneLue = fLitLigne(nMonfichierOuvert, Caract(10))
FIN
SINON
Info("problème")
FIN
fFerme(nMonfichierOuvert)


Cdlt
Message modified, June, 10 2025 - 12:51 PM
Registered member
2,211 messages
Posted on June, 10 2025 - 2:28 PM
Bonjour,

Je dirais même plus ;) :
nMonfichierOuvert est une entier
sLigneLue est une chaîne
nMonfichierOuvert = fOuvre("C:\Temp\FichierLF.TXT")

SI nMonfichierOuvert <> - 1 ALORS
sLigneLue = fLitLigne(nMonfichierOuvert, Caract(10))
TANTQUE sLigneLue <> EOT // Test de la fin de fichier
POUR i = 1 A 5
Trace(ExtraitChaîne(sLigneLue,i,";"))
FIN
sLigneLue = fLitLigne(nMonfichierOuvert, Caract(10))
FIN
SINON
Info("problème")
FIN
fFerme(nMonfichierOuvert)


--
Bon dev,
Jean-Pierre
Registered member
10 messages
Posted on June, 10 2025 - 3:32 PM
Fantastique... Merci mille fois Jean-Pierre., merci Cédric.
A ce que je vois, chaque banque a son fichier export, pour une c'est "RC" pour une autre c'est "LF".
Cordialement
Registered member
905 messages
Posted on June, 10 2025 - 3:36 PM
Pour le LF, probablement un fichier d'une appli sous Linux.
Registered member
905 messages
Posted on June, 10 2025 - 4:02 PM
Jean-Pierre,
Pas le temps de regarder ça de plus près, mais il y a un méli-mélo avec le "Tantque" et les "fLitLigne", non ? :p
Cdlt
Registered member
2,211 messages
Posted on June, 10 2025 - 8:12 PM
Bonjour Cédric,

Je crois que c'est plutôt l'indentation qui ne fonctionne pas correctement :)

--
Bon dev,
Jean-Pierre