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 :

Importer fichier csv vers excel sous vba [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Points : 55
    Points
    55
    Par défaut Importer fichier csv vers excel sous vba
    Bonjour à tous,

    J'ai créé une macro qui me permet d'importer un fichier csv vers excel et elle fonctionne trés bien.
    Ce que je voudrais faire, c'est d'automatiser le chemin vers le fichier source.
    ma source est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = "\\srvdatasdr-prod\madonne_prod$\Madonne_Output\Seuil\Sent\PL_20150803.csv.20150804-090045"
    Sachant que j'importe toujours le fichier généré en M-2 ( on est en mois d'octobre donc je dois importer celui du mois d'aout )
    Pour trouver le fichier source, je dois prendre en compte l'année et le mois (dans mon exemple en haut "201508" ) tout le reste n'est pas important.
    Comment je peux lui specifier le chemin afin que le programme importe toujours celui du M-2 ?
    j'ai pensé a procéder comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim Dat As Date
        Dat = DateSerial(Year(Date), Month(Date) - 2, Day(Date))
    Fichier = "\\srvdatasdr-prod\madonne_prod$\Madonne_Output\Seuil\Sent\PL_" & format(Dat, yyymmdd)" & ".csv.20150804-090045"

    bien evidament, ce code ne fonctionne pas, c'est juste pour vous donner une idée. En gros, j'aimerais savoir si on peut mettre genre une etoile pour remplacer tous les autres caractéres qui ne compte pas ?


    Merci pour vos réponses.

    voici le code en entier:

    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
    Sub import()
        Dim W As Worksheet
        Dim Plage As Range
        Dim Fichier As String
        Dim Dat As Date
        Dat = DateSerial(Year(Date), Month(Date) - 2, Day(Date))
    Application.ScreenUpdating = False
     
        Fichier = "\\srvdatasdr-prod\madonne_prod$\Madonne_Output\Seuil\Sent\PL_20150803.csv.20150804-090045"
     
        Set W = Worksheets("Raw Data")
        W.Activate
        With W
           With .QueryTables.Add("TEXT;" & Fichier, Range("A1"))
                .RefreshStyle = xlOverwriteCells
                .TextFileOtherDelimiter = "|"
                .Refresh False
                .Delete '<supprime la liaison
           End With
        End With
        Set W = Worksheets("CPN1")
        W.Activate
        Application.ScreenUpdating = True
    End Sub
    Cordialement,
    Freudsw

  2. #2
    Membre actif Avatar de lionel86500
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    Tu as mal écris la séquence de récupération de la date (ligne 3 de ton code)

    Pour récupérer la date dans le format que tu souhaite
    il faut faire comme cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    s1 = Format(Date, "yyyymmdd")
    MsgBox s1
    Lionel

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Points : 55
    Points
    55
    Par défaut
    salut Daniel,

    Effectivement, ce n'etait pas la bonne séquence. je viens de m'en rendre compte. mais ce que je veux savoir c'est comment remplacer tous les autres caractere pour que la recherche ne se base pas sur eux !
    Genre, la code va directement m'importer le fichier qui commence par PL_201508... et peut importe de ce qui vient apres .

    Merci encore
    Cordialement,
    Freudsw

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Bonjour,

    comme seul un nom de fichier exact peut-être ouvert, voir du côté de la fonction VBA Dir bien documentée dans l'aide …



    _____________________________________________________________________________________________________
    Je suis Charlie, Bardo, Sousse
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Points : 55
    Points
    55
    Par défaut Merci marc pour ta réponse
    je me suis documenté sur cette commande mais je n'ai pas bien compris comment l'utiliser...

    j'ai cherché dans le forum et la plupart disent qu'en mettant une * ça remplace les caractére qu'on ne veut pas prendre en compte.
    du coup j'ai essayé de proceder comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fichier = "\\srvdatasdr-prod\madonne_prod$\Madonne_Output\Seuil\Sent\" & "PL_" & Format(Dat, "yyyymm") & "*"

    mais l'etoile est considéré comme un caractere normale...donc ça me renvois le chemin suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "\\srvdatasdr-prod\madonne_prod$\Madonne_Output\Seuil\Sent\PL_201508*"
    je suis bloqué !!!

    Merci encore

    cordialement,
    Freudsw

  6. #6
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    bonjour,

    il est ou le Dir ?

  7. #7
    Membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Points : 55
    Points
    55
    Par défaut
    salut bbil,

    justement je n'ai pas utilisé cette commande car je ne sais pas ou la placer...
    tu as une idée ?

    merci,
    Freudsw

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Pour la commande dir qu'attends tu pour chercher dans l'aide en ligne Excel ??


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim stRep as string
    Dim stFichier as string
    stRep = "\\srvdatasdr-prod\madonne_prod$\Madonne_Output\Seuil\Sent\"
     
    stFichier = Dir ( stRep &  "PL_" & Format(Dat, "yyyymm") & "*")
     
    if stFichier <> "" then
     
       MsgBox stRep & stFichier
    end if

  9. #9
    Membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Points : 55
    Points
    55
    Par défaut Merci pour l'aide
    Justement j'ai cherché dans l'aide et j'ai même essayé de l'utiliser mais ça ne marchait pas ....

    Merci encore, le code marche trés bien :

    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
     
    Sub import()
        Dim W As Worksheet
        Dim Plage As Range
        Dim Fichier As String
        Dim Dat As Date
        Dat = DateSerial(Year(Date), Month(Date) - 2, Day(Date))
        Dim stRep As String
        Dim stFichier As String
    Application.ScreenUpdating = False
     
    stRep = "\\srvdatasdr-prod\madonne_prod$\Madonne_Output\Seuil\Sent\"
    stFichier = Dir(stRep & "PL_" & Format(Dat, "yyyymm") & "*")
    Fichier = stRep & stFichier
        Set W = Worksheets("Raw Data")
        W.Activate
        With W
           With .QueryTables.Add("TEXT;" & Fichier, Range("A1"))
                .RefreshStyle = xlOverwriteCells
                .TextFileOtherDelimiter = "|"
                .Refresh False
                .Delete '<supprime la liaison
           End With
        End With
        Set W = Worksheets("CPN1")
        W.Activate
        Application.ScreenUpdating = True
    End Sub

    Cordialement,
    Freudsw

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Tu n'as pas pris en compte mon IF .... il était la pour le cas ou tu n'aurais pas de fichier correspondant à tes critères

  11. #11
    Membre du Club
    Homme Profil pro
    Consultant MOA
    Inscrit en
    Septembre 2015
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Consultant MOA
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2015
    Messages : 77
    Points : 55
    Points
    55
    Par défaut
    Oui effectivement, je l'ai enlevé car à chaque fois il me met un message d'alerte en montrant le chemin du fichier; peut être qu'il faudrait mettre le contraire:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if stFichier = "" then
       MsgBox "Fichier introuvable"
    end if

    cordialement,
    Freudsw

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Importer fichier csv vers excel avec vba
    Par Freudsw dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/09/2015, 17h01
  2. [AC-2010] Importation Fichier.csv MS Excel vers Access en vba
    Par Dixies dans le forum IHM
    Réponses: 12
    Dernier message: 24/09/2014, 00h42
  3. [XL-2010] Importer fichier CSV vers MYSQL en VBA Excel
    Par 6116d dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 17/06/2014, 16h40
  4. Importer un fichier .csv sur excel avec VBA
    Par sambrook dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/01/2013, 12h47
  5. importation fichier csv vers mysql par php
    Par frboyer dans le forum Langage
    Réponses: 4
    Dernier message: 26/05/2009, 09h21

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