Fichier CSV, connexion ADO et requete SQL
Bonjour à tous,
Je butte sur une difficulté pour importer des csv dans un fichier Excel via macro ...
Je souhaite passer par une connexion ADO pour pouvoir utiliser une requête SQL (j'ai plusieurs csv à importer et je fais donc une boucle pour modifier ma requête SQL sans toucher au reste).
J'ai 2 difficultés pour arriver à mes fins :
1- la requete SQL ne ramène que la première ligne
2- les champs ne sont pas séparés, je reçois toute la ligne dans la même cellule.
Les fichiers csv sont séparés par des points virgules, ils ont des entêtes et sont stockés dans le même dossier.
Il y a certainement des erreurs dans mon code mais après avoir tenté plusieurs solutions sans succès et passé quelques heures à chercher sur le net je m'avoue vaincu ...
Un extrait du code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Set Cn = New ADODB.Connection
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Dossier.Path & ";Extended Properties=""Text;HDR=yes;FMT=Delimited(;);"""
.Open
End With
For i = LBound(ListeSA) To UBound(ListeSA)
SQLquery = "SELECT * FROM " & ListeSA(i) & ".csv"
Set Rc = New ADODB.Recordset
Set Rc = Cn.Execute(SQLquery)
Sheets("Data").Range("A1048576").End(xlUp).Offset(1, 0) = Rc.GetRows
Set Rc = Nothing
Next i |
Cn est la connexion ADODB
Rc est le recordSet sensé servir à récupérer le résultat de la requête
SQLquery est la requête SQL à éxécuter
ListeSA() est le tableau qui contient les noms de fichiers que je souhaite importer (sans l'extension)
J'aimerais garder la solution ADO si possible car j'ai potentiellement des fichiers qui peuvent avoir une structure légèrement différente et pour lesquels je devrais modifier la requête SQL pour ramener les champs qui m’intéresse.
Merci de m'aider à résoudre le problème.