Import CSV le plus efficace

Bonjour,

Dans le cadre de mon travail, j’importe régulièrement des fichiers CSV via un bouton dans mes fichiers Excel avec macros. Cependant, je ne suis pas totalement satisfait de mes macros actuelles, que je trouve perfectibles en termes de performance et de fiabilité.

Je suis donc à la recherche d’un code VBA optimisé et rapide, capable de gérer efficacement l’importation de fichiers CSV contenant entre 1 000 et 10 000 lignes.

Auriez-vous des exemples de vos meilleures solutions à me partager ?

Merci d’avance pour votre aide.

Bonjour à tous !

Si VBA n'est pas un point de passage obligé, vous devriez vous tourner vers Power Query (nativement intégré dans Excel 2016), fonctionnalité particulièrement adapté pour lire des fichiers Csv.

Bonjour,

@JFL merci pour ta réponse, je vais me renseigner sur Power Query

Je suis tout de même intéresser par un code VBA

EDIT: Je viens de regarder Power Query, c'est vrai que c'est très intéressant, mais je souhaite manipuler les données importés de tel sorte à créer des pages, fichiers, etc, je pense que le VBA est plus adapté

Bonjour,

aurais tu la possibilité de fournir un CSV de 2 3 lignes anonymisées afin de te proposer un solution, VBA ADODB pour ce qui me concerne, bien évidement Windows uniquement pour moi

Bonjour,

Voilà un fichier CSV anonymisé avec 2-3 lignes typiques. C’est le genre de structure que je dois importer et traiter.

16csv-anonyme.csv (7.48 Ko)

si c'est chaque fois un autre csv avec un autre mise en page, prenez la solution PQ et après vous pouvez retourner vers VBA ou rester en PQ. Autrement ce sera quelque chose comme ceci (à améliorer encore, avec text vers colonnes).

With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Users\Eigenaar\Downloads\csv-anonyme.csv", Destination:=Range("$A$1"))
        .CommandType = 0
        .Name = "csv-anonyme"
        .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
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 4, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 4, 1, 1, 4, 1, 1, 4, _
        4, 1, 4, 4, 4, 4, 1, 4, 1, 1, 1, 4, 4, 1, 4, 1, 1, 1, 2, 2, 1, 2, 2, 2, 2, 4, 4, 1, 1, 4, 4, 1, 1, 2, 2, 2, 2, 4, 1, 1 _
        , 1, 1, 1, 1, 1, 1, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 1, 1, 1, 1, 1, 1, 1, 4)
        .TextFileThousandsSeparator = "."
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Cells.EntireColumn.AutoFit
Rechercher des sujets similaires à "import csv efficace"