Extraire un csv dans un tableau excel en VBA [Résolu]

Signaler
Messages postés
67
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
9 avril 2013
-
Messages postés
67
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
9 avril 2013
-
Bonjour tout le monde!

Petite question. Comment extraire un fichier .csv dans un tableau excel?
En fait je fais une appli où je dois rassembler plusieurs feuilles excel de différents fichiers, dont l'un est un fichier csv. Alors quand j'ouvre ce fichier csv directement avec la souris avec excel, ça s'affiche normal.
Mais quand je copie la feuille de ce fichier csv dans mon fichier de rassemblement (par le bias de mon appli), il me le copie sous forme d'origine, c'est-à-dire qu'il ne prend pas en compte les séparateurs ";".
Tous les champs sont rassemblé dans la colonne A.

Une idée, pour qu"il me recopie la feuilel normalement?

Merci.
Bonne journée.

5 réponses

Messages postés
8
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
23 juillet 2009

pour modifier le séparateur tu fais un ctrl+f -> remplacer tu remplis les champs puis remplacer tout (tes données en elles-mêmes ont pas de ";" je suppose)

Sinon si tu fais une macro pour importer des données en choisissant le séparateur par défaut
With ActiveSheet.QueryTables.Add(Connection:="TEXT;C:\base.csv", Destination _
        :=Range("A1"))
        .Name = "base"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 1252
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited 'là tu délimites entre chaque donnée
        .TextFileTextQualifier = xlTextQualifierDoubleQuote 'c'est cette ligne qui correspond au  ";"
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub 


Bon bien sur là c'est juste le code macro fait à l'arrache, il faut un peu adapter pitetre ;)
Messages postés
8
Date d'inscription
mercredi 17 juin 2009
Statut
Membre
Dernière intervention
23 juillet 2009

Salut,
alors petites questions :
comment copies tu avec ton appli ? une petite copie du code serait le top pour jeter un coup d'oeil ^^'
Messages postés
18
Date d'inscription
lundi 28 mars 2005
Statut
Membre
Dernière intervention
29 juillet 2009

Cela vient de ton importation, il faut que tu importes et que modifie les séparateur. Cela se passe assez souvent quand on passe d'un csv en anglais ou les nombre décimaux sont avec des point et que ton excel est en francais et donc le point ne fonctionne pas.

Donc fait ton importation manuellement dans un fichier excel, en vayant à  vérifier tes séparateur enregistre leur puis ton vba fera sans doute le reste.
Messages postés
67
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
9 avril 2013

Bonjour Frippons et merci de m'avoir répondu.

voici mon code:

    Workbooks.Open (Monchemin)
    Workbooks("fich.csv").Sheets(feuille).Copy After:=Workbooks("TestCroisement.xls").Sheets(1)
    Workbooks("TestCroisement.xls").Sheets(feuille).Name = "mafeuillecsv"
    Workbooks(fich).Saved = True
    Workbooks(fich).Close

tu peux me dire comment modifier le séparateur? dans mon fichier csv c'est séparer avec des ";".

Merci.
Messages postés
67
Date d'inscription
mardi 26 mai 2009
Statut
Membre
Dernière intervention
9 avril 2013

Merci lepetitcodeur ça marche niquel!!!!!!
ya pratiquement pas de modif, tout y est!
bonne journée!!