Convertir un fichier .csv illogique

Bonjour,

les .csv c’est vraiment la galère, il n’y en a pas 1 pareil

J’ai un fichier .csv vraiment incohérent :

  • tout n’est pas concentré dans la colonne A
  • des espaces ou non entre les ;
  • le nombre ; sont différents d’une colonne et d’une ligne à l’autre

je n’arrive pas à le convertir en colonne ni manuellement ni dans une macro

auriez vous une idée ? En PJ un extrait du fichier
BALANCE TEST.xlsx (8,4 Ko)

merci

Bonjour,

Il serait mieux de placer en PJ le fichier CSV plutôt qu’un XLSX

oui pardon BALANCE TEST.csv (905 Octets)

Re,
A tester,
s’il n’y a qu’un ou deux fichier de ce genre, copier/coller les données du CSV dans l’onglet BALANCE TEST de ce classeur et Clic sur GO!
BALANCE TEST.xlsm (28,0 Ko)

alors j’ai testé sur le fichier que vous m’avez retourné ; c’est ok

mais quand je l’ai inclus dans mon projet j’ai un nouveau pb qui arrive

Re,
tu déclares
Dim wbkSource as Workbook

et tu ne t’en sert pas, mais tu initializes
Set monWB= Application.ActiveWorkbook
que tu n’as pas déclaré

Elle est là l’erreur indiquée par le message

donc le plus rapide est de déclarer
Dim monWB as Workbook

Ok j’ai déclarer la variable comme indiqué et c’est ok

pb suivant : l’import du fichier csv de mon projet en ayant inclus ta macro me donne

Re,
Je ne vois où pourrait se trouver le bug
Sur mon exemple fourni, cela fonctionne ?

oui sur ton fichier ça fonctionne

on dirait que la conversion ne va pas au bout

Minimathy Une idée ?

Déjà mets un point d’arrêt ici :

image

cliques en regard de la ligne dans la petite colonne grise à côté de l’éditeur de macro
la ligne est surlignée en marron avec un rond de la même couleur dans la colonne comme ceci :

image

exécute le traitement
Il va s’arrêter sur cette ligne

Vérifies ce que tu as onglet « Import »

Toutes les lignes et données du fichier csv sont elles présentent ?
Puis reviens dans l’éditeur de macro au niveau de l’arrêt et fais F8 pour avancer jusqu’à la dernière ligne de cette image (appuis F8 autant de fois que nécessaire avec ligne sur fond jaune sur cette dernière ligne de l’image)

image

Passe la souris sur la variable Dl qui représente le nombre de lignes à traiter
Idem sur Dc pour le nombre de colonnes à traiter

Compare avec l’ensemble des données onglet « Import »

Appuies sur F5 pour terminer le traitement

Pour enlever le point d’arrête nouveau clique sur le rond marron dans la colonne

Donnes nous tous les résultats et constat

Bonjour,

  1. oui j’ai l’onglet import

  2. Nombre de lignes à traiter = 6 ==> c’est ok

  3. Nombre de colonne à traiter = 1638 ==> moi j’en ai 14 mais le chiffre 1638 est peut-être normal ?

  4. Onglet Import

  5. Onglet Import Interm.

  6. Onglet Import balance

Bonjour

Nombre de colonne à traiter = 1638 ==> moi j’en ai 14 mais le chiffre 1638 est peut-être normal ?

Pour moi ce n’est pas normal et peut être source d un résultat altéré et surtout d un temps de traitement allongé
Avec 6 lignes ce n est pas sensible mais pour un nombre plus important celui ci risque d être handicapant
Toujours est il que c est anormal
1638 correspond bien à la variable Dc et non Columns .count ?
Dans cette hypothèse je te propose de faire l essai de remplacer cette ligne douteuse quant à son résultat par :
Dc = 14
Tu mets en début de la ligne de code actuelle une cote pour l inactiver et dessous juste après cet nouvelle ligne
Refais un essai
Donnes moi son resultat

j’ai ceci dans l’onglet Import intermédiaire après avoir fait l’essai

A la ligne de code :

For i = 2 to Dl
Mets un point de arrêt
Exécutes le traitement
Au point d arrêt fais F5
Passes la souris sur la variable i pour récupérer sa valeur
Tant que cette valeur n est pas 6 tu continues F5
Des que la valeur a atteint 6
Mets un point d arrêt supplémentaire à Next i et fait F5
Le traitement doit s arrêter à ce deuxième point de arrêt
Fais F8
Le traitement dois revenir au premier point d arrêt pour traiter les lignes suivantes
Si ce n’est pas le cas où va t il ?

« Passes la souris sur la variable i pour récupérer sa valeur » : pas possible une ligne jaune se met sur le point d’arrêt Fori=2toDl
j’ai quand même fais la suite

Bonjour,

Cela n’a rien à voir avec la macro

Ouvre simplement ton classeur CSV depuis ton explorateur Windows
et compare maintenant avec celui que tu ouvres par la macro (feuille IMPORT)
Et regarde les différences (guillemets en plus et colonnes supplémentaires remplies)

Il se peut simplement que le codage du fichier CSV entre le PC qui l’a enregistré et le tien ne soit pas compatible
Si tu fait une copie de ton classeur CSV et que tu le copies sur la feuille import, cela fonctionnera

Miminaty

j’ai fais ta proposition et ça fonctionne donc j’en déduit que le souci vient du début de la macro

y -il une solution de correction ?

Re,
NON, cela vient de l’encodage de départ du CSV

Où se situe le Pb
Sur le nombre de lignes à traiter ?
Ou
Sur le traitement de chaque ligne

J’ai un doute
Moi je pensais qu’il manquait des lignes que le traitement s’arrêtait à la 6ième alors qu’il devait en avoir plus
Me serais je trompé ???
Si c’est la ligne qui n’est pas conforme à l’attendu il faudrait nous transmettre l’onglet import dont tu nous a fourni l’image ci-dessus pour l’étudier