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 :

Requête sur fichier CSV via OLEDB


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut Requête sur fichier CSV via OLEDB
    Bonjour
    Je souhaite faire une requête SQL sur un fichier CSV.
    J’arrive à me connecter mais les colonnes du fichier ne sont pas correctement détectées.
    Lorsque je fais un Select * sur le fichier, cela me renvoie pour chaque enregistrement tous les champs sur une même ligne, séparés par des « ; ».
    Lorsque j’ouvre le fichier csv sur Excel, je vois pourtant chaque colonne correctement séparée.

    Voici le code

    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
     
     
    'Connexion BDD
        Dim Cn As ADODB.Connection
        Set Cn = New ADODB.Connection
     
        With Cn
            .Provider = "Microsoft.Jet.OLEDB.4.0"
            .ConnectionString = "Data Source=C:\Users\;Extended Properties='text;HDR=YES;FMT=CSVDelimited'"
            .Open
        End With
     
        'Résultat request
        Dim rsT As ADODB.Recordset
        Set rsT = New ADODB.Recordset
        rsT.Open "SELECT * FROM [fichierTest.csv]", Cn
     
        If Not rsT.EOF Then
     
            'Exportation du résultat
            Call ThisWorkbook.Worksheets("ResultRST").Range("$A$1").CopyFromRecordset(rsT)
     
        End If
     
        'Fermeture connexion
        rsT.Close
        Cn.Close
    D’où vient le problem selon vous ? Je pense qu’il doit manquer une propriété dans le ConnectionString mais je ne sais pas laquelle.

    Merci d’avance.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Points : 1 394
    Points
    1 394
    Par défaut
    regarde le premier exemple de ce site

    http://www.connectionstrings.com/textfile

    tu remarqueras qu'il peut être nécessaire de modifier le registre pour certains CSV (afin de préciser le délimiteur). C'est peut être le cas.

    Sinon il faudra changer de driver
    http://www.connectionstrings.com/Pro...xt-odbc-driver

  3. #3
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 199
    Points : 58
    Points
    58
    Par défaut
    Ok donc vu que la macro est pour un autre utilisateur que moi, il va donc falloir que je fasse les requête autrement, j'importerai les fichiers en base ligne par ligne et je ferai ensuite les requêtes.

    Merci pour ta réponse en tout cas.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Avril 2008
    Messages
    875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 875
    Points : 1 394
    Points
    1 394
    Par défaut
    sinon comme dans le 2ème lien, tu utilises le Microsoft text driver avec un fichier schema.ini dans le même dossier

  5. #5
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    Bonjour,

    autre idée encore, vu ceci :
    Lorsque je fais un Select * sur le fichier, cela me renvoie pour chaque enregistrement tous les champs sur une même ligne, séparés par des « ; ».
    Lorsque j’ouvre le fichier csv sur Excel, je vois pourtant chaque colonne correctement séparée.
    Pourquoi pas ne pas faire en 2 étapes :
    1) ouvrir ton fichier CSV sur Excel (via VBA)
    2) faire ta requête (ou Filtre, Filtre Elaboré,...) sur le contenu mis dans excel
    3) Supprimer ou pas le résultat Excel de la lecture du CSV.


Discussions similaires

  1. Génération fichier .csv via une requête SQL
    Par matnys dans le forum Import/Export
    Réponses: 5
    Dernier message: 12/12/2011, 22h03
  2. [AJAX] requête sur fichier.xml => erreur 405 sous IE !
    Par jeje13009 dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 26/03/2007, 21h42
  3. Ecriture sur fichier csv
    Par PIMPMAX dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 09/01/2007, 11h55
  4. Réponses: 11
    Dernier message: 17/05/2006, 10h48

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