PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Lire CSV
Lire CSV
Débuté par Jean-Michel, 03 mai 2025 10:02 - 14 réponses
Membre enregistré
856 messages
Posté le 03 mai 2025 - 10:02
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
Membre enregistré
3 705 messages
Posté le 03 mai 2025 - 11:20
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
Membre enregistré
856 messages
Posté le 03 mai 2025 - 14:54
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
Membre enregistré
2 256 messages
Posté le 03 mai 2025 - 19:48
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
Membre enregistré
10 messages
Posté le 09 juin 2025 - 19:32
Apparemment avec mon code, j'enregistre uniquement la dernière ligne...
Membre enregistré
950 messages
Posté le 09 juin 2025 - 22:01
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
Posté le 10 juin 2025 - 12:31
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 !
Membre enregistré
10 messages
Posté le 10 juin 2025 - 12:41
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
Membre enregistré
10 messages
Posté le 10 juin 2025 - 12:43
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
Membre enregistré
950 messages
Posté le 10 juin 2025 - 12:47
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 modifié, 10 juin 2025 - 12:51
Membre enregistré
2 256 messages
Posté le 10 juin 2025 - 14:28
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
Membre enregistré
10 messages
Posté le 10 juin 2025 - 15:32
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
Membre enregistré
950 messages
Posté le 10 juin 2025 - 15:36
Pour le LF, probablement un fichier d'une appli sous Linux.
Membre enregistré
950 messages
Posté le 10 juin 2025 - 16:02
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
Membre enregistré
2 256 messages
Posté le 10 juin 2025 - 20:12
Bonjour Cédric,

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

--
Bon dev,
Jean-Pierre