Fusion fichiers CSV dans un classeur XLSM

Bonjour,

je cherche à regrouper plusieurs fichiers CSV dans un seul fichier Excel, j'ai réalisé une macro qui fait assez bien le job mais j'ai un soucis. Lorsque les fichiers CSV sont importés dans le fichier Excel, la mise en page n'est pas bonne. Les séparateurs (point virgule) ne sont pas pris en compte mais la séparation se fait par les virgules (séparateur de décimal). Cependant, quand j'ouvre le fichier csv manuellement et que je fais "enregistrer sous" en formart xlsx, le transfert se fait correctement. Le problème vient donc pour moi de la macro mais je ne vois pas d'où.

Pouvez-vous m'aider à y voir plus clair ?

Merci d'avance pour vos réponses

Voilà la macro utilisée :

Sub Ajout()
' Insère dans ce fichier tous les CSV du répertoires + format xls directement
ChDir ActiveWorkbook.Path
Set classeurMaitre = ActiveWorkbook
compteur = 1
nf = Dir("*.csv")
Do While nf <> ""
If nf <> classeurMaitre.Name Then
Workbooks.Open Filename:=nf
For k = 1 To Sheets.Count
Sheets(k).Copy After:=classeurMaitre.Sheets(classeurMaitre.Sheets.Count)
compteur = compteur + 1
Next k
Workbooks(nf).Close False
End If
nf = Dir
Loop
End Sub

Et des captures d'illustration du problème :

sans titre

Bonjour Julie_03,

Et Bienvenue sur le forum d'Excel-Pratique.com !

A mon sens, l'anomalie serait liée à cette fonction :

Workbooks.Open Filename:=nf

En effet, les caractéristiques ne sont pas définies dans la macro lors de l'ouverture du fichier csv. Excel utilise donc les paramètres par défaut.

Pourriez vous communiquer un fichier csv (de la ligne 1 à 19 compris - cela suffira) sans information confidentielle ?

Bonsoir Julie_03

comme on te dit il faut regarder su coté de certains paramètres supplémentaires, alors peut-être

Workbooks.Open Filename:=nf, Delimiter:=";", Local:=True

sinon il faudra regarder ce qu'apporte Workbooks.OpenText au lieu de Workbooks.Open

Nous attendons ton fichier

Merci pour vos réponses ! je vais me pencher sur vos indications.

Voici un fichier csv de la ligne 1 à 19.

3exemple.csv (0.98 Ko)

Bonjour Julie,

Remplace la fonction :

Workbooks.Open Filename:=nf

par :

Workbooks.OpenText Filename:=nf, Origin:=65001, DataType:=xlDelimited, Semicolon:=True, Local:=True

et cela devrait être conforme à tes attentes :)

Bonjour,

Pourquoi ne pas utiliser power query ?

image

Si plusieurs fichiers alors utilisés ceci :

image
Rechercher des sujets similaires à "fusion fichiers csv classeur xlsm"