VBA ouverture CSV

Anonyme
2016-05-20T14:29:07+00:00

Bonjour,

Par enregistrement d'une macro

j'ouvre un fichier CSV

Fichier Ouvrir Type de Fichiers 

je choisis mon fichier il s'ouvre tout se décompacte bien en colonnes  selon le ; séparateur.

Par suite j'exécute ma macro

'>

Workbooks.Open Filename:="C:\MonRep\MonFichier.csv"

Le fichier s'ouvre mais reste compacté.

Merci

--

LSteph

Microsoft 365 et Office | Excel | Pour la maison | Windows

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire
Réponse acceptée par l’auteur de la question
DanielCo 107.1K Points de réputation
2016-05-20T15:16:23+00:00

Bonjour LSteph

Utilise le paramètre Local:=True de la méthode Workbooks.Open

Cordialement.

Daniel

Cette réponse a-t-elle été utile ?

1 personne a trouvé cette réponse utile.
0 commentaires Aucun commentaire
Réponse acceptée par l’auteur de la question
Anonyme
2016-05-20T14:59:07+00:00

Bonjour lSteph,

Le fichier s'ouvre mais reste compacté.

J'ai déjà eu ce problème je l'avais résolu avec

'-----------
With Feuil1
.Columns("A:A").TextToColumns Destination:=.Range("A1"), DataType:=xlDelimited, Semicolon:=True
end with
'-----------

--
Salutations
JJ

Cette réponse a-t-elle été utile ?

0 commentaires Aucun commentaire

29 réponses supplémentaires

Trier par : Les plus récents
  1. DanielCo 107.1K Points de réputation
    2016-05-20T18:50:11+00:00

    Ou même, faire l'actualisation de la requête en arrière plan :

    .Refresh BackgroundQuery:=True 

    avec un module de classe et une macro événementielle :

    Private Sub QueryTable_AfterRefresh(Success As Boolean)Pourquoi pas ?Daniel
    

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  2. Anonyme
    2016-05-20T18:17:51+00:00

    Pardon à tous,

    c'est moins simple que ça:

    Sub SVG_CSV_Vers_Xlsx()

    '

    ' Ouvre un CSV et l'enregistre comme Xlsx

    '   Il faut enregistrer les spécifications de lecture et de conversion

    '

        With ActiveSheet.QueryTables.Add(Connection:= _

            "TEXT;Z:\Clés_Usb\KINGSTON\Doc_Formations\Microsoft_07-10\Doc_Excel\Tableaux_remplis\Données\Horaires.csv" _

            , Destination:=Range("$A$1"))

            .CommandType = 0

            .Name = "Horaires"

            .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 = True

            .TextFileSemicolonDelimiter = True

            .TextFileCommaDelimiter = False

            .TextFileSpaceDelimiter = False

            .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1)

            .TextFileTrailingMinusNumbers = True

            .Refresh BackgroundQuery:=False

        End With

    '

    '   fin des spécifications de lecture et de conversion

    '

        Workbooks.Open Filename:= _

            "Z:\Clés_Usb\KINGSTON\Doc_Formations\Microsoft_07-10\Doc_Excel\Tableaux_remplis\Données\Horaires.csv"

        ActiveWorkbook.SaveAs Filename:= _

            "Z:\Travaux_Perso\Office_13\Excel_13\Horaires_Csv_Cvrt_Xl.xlsx", FileFormat:= _

            xlOpenXMLWorkbook, CreateBackup:=False

    End Sub

    En réalité, ce n'est pas forcément rentable, sauf si l'opération se répète avec:

    • le même format CSV
    • une fréquence importante

    Mille excuses pour la première réponse: trop simple en effet, et je ne parle pas du bourrin...

    Cordialement

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire
  3. Anonyme
    2016-05-20T17:34:36+00:00

    Bonsoir LSteph,

    Comme la question suivante risque fort de porter sur la désignation des dossiers d'origine et / ou de destination, je vous propose le code suivant:

    Sub SVG_CSV_Vers_Xlsx_Av_Dlg_Box()

    '

    ' Ouvre un CSV et l'enregistre comme Xlsx

    '   A l'ouverture: demande de dossier d'origine

    '

        Workbooks.Open Filename:=Application.GetOpenFilename("Text Files (*.csv), *.csv")

    '

    '   A la fermeture: demande de dossier de destination

    '

        ActiveWorkbook.SaveAs Filename:=Application.GetSaveAsFilename(fileFilter:="xlsx Files (*.xlsx), *.xlsx")

    End Sub

    Cordialement

    Cette réponse a-t-elle été utile ?

    0 commentaires Aucun commentaire