Ouverture d'un fichier csv

Salut,

J'ai besoin d'ouvrir un fichier CSV pour extraire certaines des données qu'il contient.

Quand je l'ouvre manuellement à partir de Windows Explorer j'ai bien toutes les données rangées par colonne. Par contre quand je l'ouvre avec

FichierSource = Application.GetOpenFilename(FileFilter:="Fichiers Excel (*.csv*), *.csv*", MultiSelect:=False)

Toutes les données sont concaténées dans la première colonne, séparées par des points virgules.

Est ce qu'il y a un paramètre à rajouter pour l'ouvrir " normalement " ?

Merci d'avance.

Manu

Bonjour à tous !

Power Query (nativement intégré dans Excel depuis 2016) peut aisément remplir cette tâche !

Voilà le code que ça me génère

    ActiveWorkbook.Queries.Add Name:="Liste pilotes sélectionnés 22_07_2023", _
        Formula:= _
        "let" & Chr(13) & "" & Chr(10) & "    Source = Csv.Document(File.Contents(""C:\Users\manuc\Downloads\Liste pilotes sélectionnés 22_07_2023.csv""),[Delimiter="";"", Columns=82, Encoding=1200, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & "    #""En-têtes promus"" = Table.PromoteHeaders(Source, [PromoteAllScalars=true])," & Chr(13) & "" & Chr(10) & "    #""Type modifié"" = Table.TransformColumnTypes(#""En-têtes promus"",{{""Nom"", type tex" & _
        "t}, {""Prenom"", type text}, {""Email"", type text}, {""Téléphone"", type text}, {""Adresse1"", type text}, {""Adresse2"", type text}, {""Adresse3"", type text}, {""Ville"", type text}, {""CP"", Int64.Type}, {""Pays"", type text}, {""Sexe"", type text}, {""Date de naissance"", type text}, {""Inscription"", type date}, {""profil"", type text}, {""Contact urgence"", t" & _
        "ype text}, {""Profession"", type text}, {""Type d'adhérent"", type text}, {""Dernier vol"", type date}, {""Instructeur référent"", type text}, {""Numéro FFA"", type text}, {""Numéro FFPLUM"", type text}, {""Cotisation Club 2018"", type date}, {""Cotisation Club 2019"", type date}, {""Cotisation Club 2020"", type date}, {""Cotisation Club 2021"", type date}, {""Cotis" & _
        "ation Club 2022"", type date}, {""Cotisation Club 2023"", type date}, {""Cotisation Club 2024"", type text}, {""Cotisation FFA 2018"", type date}, {""Cotisation FFA 2019"", type date}, {""Cotisation FFA 2020"", type date}, {""Cotisation FFA 2021"", type date}, {""Cotisation FFA 2022"", type date}, {""Cotisation FFA 2023"", type date}, {""Cotisation FFA 2024"", type " & _
        "text}, {""Cotisation FFPLUM 2018"", type text}, {""Cotisation FFPLUM 2019"", type date}, {""Cotisation FFPLUM 2020"", type date}, {""Cotisation FFPLUM 2021"", type date}, {""Cotisation FFPLUM 2022"", type date}, {""Cotisation FFPLUM 2023"", type date}, {""Cotisation FFPLUM 2024"", type text}, {""Licence PPLA"", type text}, {""Licence CPLA"", type text}, {""Licence U" & _
        "LM"", type text}, {""Licence TT"", type text}, {""Licence PPLH"", type text}, {""Licence LAPLA"", type date}, {""Licence BB"", type text}, {""Licence ATPLA"", type text}, {""Licence PPLA-FAA"", type text}, {""Qualification Visite médicale Classe 2"", type date}, {""Qualification SEP"", type date}, {""Qualification FI(A)"", type date}, {""Qualification VFR Nuit"", ty" & _
        "pe text}, {""Qualification Vol découverte"", type date}, {""Qualification Vol d'initation"", type date}, {""Qualification Convoyage"", type date}, {""Qualification FE(A)"", type date}, {""Qualification Vol d'essai"", type date}, {""Qualification MultiaxesULM"", type text}, {""Qualification Visite médicale Classe 1"", type text}, {""Qualification F-CL 1.055 Langue An" & _
        "glaise niveau 5"", type date}, {""Qualification Voltige"", type text}, {""Qualification Visite Médicale LAPL"", type date}, {""Qualification Certificat Médical ULM"", type date}, {""Qualification FI(ULM)"", type date}, {""Qualification Vol BIA"", type date}, {""Lâcher F-GBVK"", type text}, {""Lâcher F-GKBO"", type text}, {""Lâcher F-HBPY"", type text}, {""Lâcher F-G" & _
        "IKD"", type text}, {""Lâcher F-JHCP"", type text}, {""Formation en cours PPLA"", type date}, {""Formation en cours LAPLA"", type date}, {""Formation en cours ULM"", type date}, {""Formation en cours Voltige"", type date}, {""Formation en cours Voltige_1"", type date}, {""Compte pilote"", type text}, {""Solde comptable au 22/07/2023 (Euros)"", type number}, {""Solde " & _
        "corrigé au 22/07/2023 (Euros)"", type number}, {""Numéro Badge"", type text}})" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & "    #""Type modifié"""
    ActiveWorkbook.Worksheets.Add
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:=Array( _
        "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=""Liste pilotes sélectionnés 22_07_2023"";Extended Properties=""""" _
        , ""), Destination:=Range("$A$1")).QueryTable
        .CommandType = xlCmdSql
        .CommandText = Array( _
        "SELECT * FROM [Liste pilotes sélectionnés 22_07_2023]")
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .ListObject.DisplayName = "Tableau_Liste_pilotes_sélectionnés_22_07_2023"
        .Refresh BackgroundQuery:=False
    End With

Adapter ce code à un nom de fichier variable et surtout à une structure qui évoluera régulièrement (avec ajout de colonnes), même si je n'utilise que les 7 ou 8 premières colonnes qui elles sont fixesn ça va être coton.

Je préfèrerais l'équivalent du Semicolon:=True qui était apparemment utilisé sur les versions précédentes.

C'est quand même incompréhensible qu'une macro ne donne pas le même résultat que la manip manuelle qui a été enregistrée pour la créer.

Manu

Bonsoir à tous !

Pourquoi passer en VBA pour utiliser Power Query ?

Lisez, enrichissez vos données directement dans Power Query ! Quelques clics suffisent généralement.

Pour Excel 2013, il sera nécessaire d'installer un complément gratuit Microsoft.

Parce que je ne connais pas Microsoft Query et j'ai aucune idée du comment intégrer ça dans la macro qui traite les données qu'elle récupère du fichier CSV.

En fouillant Google j'ai trouvé la solution. Il faut renommer le fichier csv en txt, et rajouter un ", Format:=4" après l'instruction d'ouverture du fichier. C'est infiniment plus simple, même pas besoin de cliquer.

Manu

Bonsoir à tous !

Merveilleux !

Rechercher des sujets similaires à "ouverture fichier csv"