Convertir un fichier .csv illogique

je ne pense pas que le nb venait du nom de ligne car sur un fichier réel avec + de lignes j’avais le même souci ; mais plutôt sur le traitement de chaque ligne

Minimathy pense qu’on ne peut rien faire car ça vient de l’encodage de départ et de mon côté les fichiers importés viennent d’un logiciel comptable donc je ne peux rien faire non plus à mon niveau

FFO, à moins que tu es encore une idée sous pied, je vais laisser tomber

La seule chose que je puisse faire ç est de tester de mon côté pour voir ce que j obtiens
Peut être essayer une autre méthode sans garantie
Pour cela il me faudrait le fichier csv qui pose pb
Pas d autre choix
A toi de voir

Ci joint le fichier .csv ; ce n’est pas l’original, je l’ai réduit en nombre de ligne et anonymé

ci joint le fichier BALANCE TEST.csv (905 Octets)

Re,
C’est peut-être déjà là, le début du soucis !!!

Ci joint ma proposition

Onglet « CSV » 3 boutons
un bouton Import CSV (attention le fichier CSV dans le même répertoire que celui de l’outil appelé : BALANCE TEST.csv)
un bouton Traitement avec le résultat onglet « Donnée »
un bouton Traitement 2" avec le résultat onglet « Donnée »

ces 2 traitements sont différents dans leur approche mais donnent le même résultat
A essayer l’un et l’autre pour opter pour celui qui répond le mieux à ton attente

Onglet « Conversion » le résultat des 2 traitements l’un sous l’autre rapporté à la main pour les comparer ils sont identiques

Ce n’est pas dit que tu obtiennes un meilleur résultat mais il faut essayer

Dis moi

BALANCE TEST.xlsm (28,7 Ko)

je teste le 1er traitement en l’incluant dans mon projet

il est dit pour i « variable non définie »
et je pense que j’aurais le même souci avec j

Je ne sais pas quel est ton projet
Il semble réclamer la déclaration des variables
Fais à l’identique du précédent code
Pour le 1° traitement :
Dim i %, j %, colonne %, donnée$
Pour le 2° traitement :
Dim i %, j %, k %, l %, colonne %, colonne1 %, donnée$, donnée1$

L’exemple à suivre :

pb suivant « erreur de syntaxe » et pourtant j’ai copié coller ton outil et changer les libellés des onglets
dans ton outil sur à l’onglet Donnée et dans le code, à un momment tu as cette ligne
donnée = donnée & Cells(i, j)

faut-il aussi remplacer le mot donnée

Non les variables sont correctes et notamment la variable donnée
Essaies de ramener toute la partie rouge à part dans une nouvelle macro
Il y a t il toujours un problème de syntaxe ?

Si oui tu supprimes cette partie rouge pour l instant
Tu executes le code sans elle
Tu vas ensuite dans l onglet « Import interm »
En colonne À il y a toutes les données
Selectionnes toute la colonne
En enregistrant une macro fais les manipulations suivantes :
Données puis convertir puis choix Délimité puis suivant puis cocher point virgule puis suivant jusqu au choix du format cocher texte puis terminer
Arrêter l enregistrement
Rexécuter le traitement
Retourner sur l onglet « Import interm »
Exécuter la macro enregistrée
Si OK envoies moi le script pour quelques modifications à effectuer je te le renvoie en remplacement du premier

alors je pense qu’en amont il y a un autre souci
les données de la feuille import ne partent pas dans la feuille import interm
il est repris les données d’une autre feuille qui n’a rien à voir et qui ma 1ère feuille de « page de garde »

Re
Ouvre ton fichier CSV
Enregistre le sous fichier XLSX
et lance ta macro que tu avais au départ

Tu dois exécuter ton traitement à partir le l’onglet « Import » (onglet actif à l’écran)
Celui-ci sera rempli par la partie de code qui récupère les données du fichier CSV
Puis la 2° partie que je t’ai fourni sans la partie en rouge te remplira à partir de ces données récupérées dans cet onglet en colonne A de l’onglet « Import interm » toutes les données par ligne concatainées
Restera à les répartir dans cet onglet en enregistrant la macro de répartition

Bonjour FFO

Le traitement ne pourra se faire étant donné que le CSV se transforme en l’ouvrant par VBA
Fais le test comme j’ai précisé plus haut et regarde

en ouvrant le CSV depuis windows

en ouvrant avec la macro

Il est effectivement morcelé mais après je le recompose par ligne en recollant chaque donnée de chaque cellule en une seule dans la cellule de destination colonne A onglet « Import interm »
J’ai pris le CSV qui m’a transmis et ainsi pas de difficulté cela fonctionne
Qu’en penses tu il y a quelque chose que je n’ai pas intégré ?

Le CSV importé :

Concatainé en colonne A onglet de destination

Redispaché par colonne :

Je ne vois pas ce qui coince

Re,

Ce qui coince, c’est que tes données sont absentes de virgule
ex:
4211,76 etc

Dans le CSV c’est pareil je viens de vérifier
Pourquoi faut il une virgule si la source n’en as pas
Au nom de quoi tu peux dire que ce chiffre doit être avec une virgule ?
Sur quoi bases tu cette affirmation sachant que la source en est dénuée

Quoi qu’il en soit et cela me surprend si virgule il faut (très bizarre) à la concaténation on la rajoute sans aucun souci mais il faut être sur du coup ce qui n’est pas mon cas
maintenant je m’adapte
A suivre

Re,
Tu n’avais pas participé à ce post