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 :
Cn est la connexion ADODB
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 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
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.
Partager