IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro import CSV avec options


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    VOC
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : VOC

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Macro import CSV avec options
    Bonjour,

    Je suis débutant complet sur Excel 2016, et je voudrais créer une macro très simple qui quand je la lance, me mettre un message me demandant de choisir mon CSV à importer, et quand je clique sur OK, qu'il me demande de choisir mon fichier CSV, et qu'il l'importe avec ces 2 options :

    - Origine du fichier : 65002: Unicode (UTF-8)
    - Délimiteur : Point-virgule

    Et qu'il me le charge dans une nouvelle feuille.

    Pouvez-vous m'aider ?

    Merci !

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Bonjour,

    As-tu essayé avec l'enregistreur de macro ?
    Il te donnera 90% du code

    Pour le choix du fichier renseigne toi sur Application.GetOpenFilename
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par lonsdalien Voir le message
    Je suis débutant complet sur Excel 2016,
    Fort heureusement, il est possible d'y remédier : http://bidou.developpez.com/article/VBA/

    je voudrais créer une macro très simple
    Si c'était simple, tu l'aurais fait toi-même donc ne commence par par minimiser l'aide qui t'est apportée.

    quand je la lance, me mettre un message me demandant de choisir mon CSV à importer,
    Méthode GetOpenFileName en spécifiant le paramètre FileFilter pour ne voir que les CSV.
    https://msdn.microsoft.com/library/8...ice.15%29.aspx

    Attention, cette méthode n'ouvre pas le fichier (voir la suite), elle te permet seulement d'obtenir un chemin et un nom de fichier.

    qu'il l'importe avec ces 2 options :
    - Origine du fichier : 65002: Unicode (UTF-8)
    - Délimiteur : Point-virgule
    Je te conseille d'utiliser la méthode OpenText de Workbooks plutôt que Open. Elle offre plus de souplesse et de possibilités, surtout si tu veux jouer sur les option.
    https://msdn.microsoft.com/fr-fr/vba...t-method-excel

    Regarde en particulier les paramètres Semicolon et Origin.

    Et qu'il me le charge dans une nouvelle feuille.
    Si tu veux transférer le contenu du CSV dans un classeur existant, il faut dire si tu veux que ce soit un nouvel onglet ou si tu veux que les données soient copiés dans un onglet existant et, dans ce dernier cas, expliquer où et comment.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Candidat au Club
    Homme Profil pro
    VOC
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : VOC

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Oui j'ai essayé, mais je galère, j'ai aucune compétence en codage.
    il fait référence à mon fichier spécifiquement importé, avec le nombre et type de colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    Sub test()
    '
    ' test Macro
    '
     
    '
        ActiveWorkbook.Queries.Add Name:= _
            "xxxxxxxxxx (5)", Formula:= _
            "let" & Chr(13) & "" & Chr(10) & "    Source = Csv.Document(File.Contents(""C:\xxxxxxxxxx.csv""),[Delimiter="";"", Columns=20, Encoding=65001, QuoteStyle=QuoteStyle.None])," & Chr(13) & "" & Chr(10) & "    #""Type modifié"" = Table.TransformColumnTypes(Source,{{""Column1"", type text}, {""Column2"", type text}, {""Column3" & _
            """, type text}, {""Column4"", type text}, {""Column5"", type text}, {""Column6"", type text}, {""Column7"", type text}, {""Column8"", type text}, {""Column9"", type text}, {""Column10"", type text}, {""Column11"", type text}, {""Column12"", type text}, {""Column13"", type text}, {""Column14"", type text}, {""Column15"", type text}, {""Column16"", type text}, {""Colu" & _
            "mn17"", type text}, {""Column18"", type text}, {""Column19"", type text}, {""Column20"", 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=""xxxxxxxxxx (5)"";Extend" _
            , "ed Properties="""""), Destination:=Range("$A$1")).QueryTable
            .CommandType = xlCmdSql
            .CommandText = Array( _
            "SELECT * FROM [xxxxxxxxxx (5)]")
            .RowNumbers = False
            .FillAdjacentFormulas = False
            .PreserveFormatting = True
            .RefreshOnFileOpen = False
            .BackgroundQuery = True
            .RefreshStyle = xlInsertDeleteCells
            .SavePassword = False
            .SaveData = True
            .AdjustColumnWidth = True
            .RefreshPeriod = 0
            .PreserveColumnInfo = True
            .ListObject.DisplayName = _
            "xxxxxxxxxx__5"
            .Refresh BackgroundQuery:=False
        End With
    End Sub

  5. #5
    Candidat au Club
    Homme Profil pro
    VOC
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : VOC

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    @Menhir merci, je regarde ça !

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par lonsdalien Voir le message
    j'ai aucune compétence en codage.
    Un Chef de projet SSII qui n'a jamais codé ??? Étonnant...

    ActiveWorkbook.Queries.Add Name:= _
    Essayer de passer par des tables de requêtes quand on débute en VBA, c'est un peu comme apprendre à piloter en commençant par les looping.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Candidat au Club
    Homme Profil pro
    VOC
    Inscrit en
    Décembre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : VOC

    Informations forums :
    Inscription : Décembre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Un Chef de projet SSII qui n'a jamais codé ??? Étonnant...
    Aucune idée de pourquoi c'est marqué ça dans mon profil ^^
    je corrigerai !

    Citation Envoyé par Menhir Voir le message
    Essayer de passer par des tables de requêtes quand on débute en VBA, c'est un peu comme apprendre à piloter en commençant par les looping.
    ça marche merci !

Discussions similaires

  1. Import csv avec option dans URL
    Par wsquare dans le forum SAS Base
    Réponses: 12
    Dernier message: 09/01/2014, 09h00
  2. import CSV avec encodage dans la foulée
    Par benoitXV dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 10/12/2008, 13h07
  3. [Macro]Problème d'importation .CSV avec macro
    Par Eric Harvey dans le forum VBA Access
    Réponses: 8
    Dernier message: 12/04/2007, 17h04
  4. [CSV] importation CSV avec des guillemets
    Par trash_board dans le forum Langage
    Réponses: 3
    Dernier message: 12/09/2006, 14h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo