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 anciens
  1. 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
  2. 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
  3. Anonyme
    2016-05-20T19:44:52+00:00

    Bonjour tous,

    Correctif (le 20 Mai) :(

    Hier soir j'ai interverti les 2 dernières images... (Cloppy n'avait pourtant bu que 3 Whiskies...); pardon

    Je confirme qu'il vaut mieux utiliser l'assistant:

    Je n'ai pas trouvé dans le VBA le composant, même en cherchant bien...

    Autrement, si tout est vraiment répétitif, enregistrer toutes les étapes donne une macro moche mais potable...

    (l'exemple utilisé fonctionne vraiment pour récupérer les données de l'horloge pointeuse et les transformer dans Excel avec une macro aux petits oignons - les information personnelles présentées sont bidon)

    Voilà

    Bonne journée à tous

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

    0 commentaires Aucun commentaire