Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/10/2011, 09h06   #1
Futur Membre du Club
 
Inscription : mars 2004
Messages : 50
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2004
Messages : 50
Points : 15
Points : 15
Par défaut Problème de requete SQL sur fichiers xls/csv

Bonjour,

Je suis actuellement en train de réaliser une macro pour récupérer des données provenant de plusieurs fichiers csv, et les mettre dans un fichier résultat xls.
Mon principale soucis, c'est que je n'arrive pas à faire la moindre requete un peu complexe :
- pas moyen de demander plusieurs champs
- pas moyen d'utiliser ORDER BY

Par contre, certaines requetes "simples" fonctionnent bien.
Le INTO fonctionne, le WHERE aussi, le CONCAT aucune idée, etc.

Je viens donc vous demander de l'aide pour faire fonctionner la requete suivante, voir si vous voyez si ma requête est mal formulée, ou si mes options de connexion ne sont pas bonnes, etc.

Code :
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
 
Dim connexion_dossier_csv As New ADODB.Connection
 
With connexion_dossier_csv
  .Provider = "Microsoft.Jet.OLEDB.4.0"
  .ConnectionString = "Data Source=" & chemin_dossier_csv & ";" & _
                      "Extended Properties=""Text;HDR=No;"""
  .Open
End With
 
for i = 0 to nb_choix
  nom_feuille = "Choix" & i
  str_requete = "SELECT" & _
                " A.[COL_1]," & _
                " B.[COL_1]," & _
                " CONCAT(A.[COL_1],B.COL_1])," & _
                " B.[COL_2]," & _
                " B.[COL_3]," & _
                " A.[COL_2]," & _
                " A.[COL_3]," & _
                " A.[COL_4]" & _
                " INTO [Excel 8.0;Database=" & chemin_fichier_sortie_xls & "].[" & nom_feuille & "]" & _
                " FROM [" & chemin_fichier_csv_1 & "] A, [" & chemin_fichier_csv_2 & "] B " & _
                " WHERE A.[COL_3] = B.[COL_4]" & _
                " AND A.[COL_4] = '" & nom_feuille & "'"
  connexion_dossier_csv.Execute str_requete
  'connexion_dossier_csv.Execute str_requete, nb_enr
next i
 
connexion_dossier_csv.Close
Set connexion_dossier_csv = Nothing
Notez que pour le moment, je fait bien cette requete, mais sans le INTO et le CONCAT. Tous les autres traitements sont fait sur un RecordSet, sauf que c'est atrocement long.
Code :
1
2
3
4
5
 
  str_requete = "SELECT" & _
                " A.[*]," & _
                " B.[*]," & _
                " FROM ..."
J'suis preneur de toute idée ou tout commentaire.
Merci d'avance.

Cyborg
Cyborg est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/10/2011, 17h35   #2
Futur Membre du Club
 
Inscription : mars 2004
Messages : 50
Détails du profil
Informations personnelles :
Âge : 30

Informations forums :
Inscription : mars 2004
Messages : 50
Points : 15
Points : 15
Re-bonjour,

Pour ceux que ça intéresse, la requete "SELECT INTO" qui permet de directement remplir une table (donc un onglet par exemple) ne fonctionne que si on travaille avec des fichiers Excel, au minimum.

Code :
1
2
3
4
5
6
With connexion_dossier_csv
  .Provider = "Microsoft.Jet.OLEDB.4.0"
  .ConnectionString = "Data Source=" & chemin_dossier_csv & ";" & _
                      "Extended Properties=""Excel 8.0;HDR=Yes;"""
  .Open
End With
Donc à oublier si vous travaillez sur un répertoire de fichiers csv, comme je le faisais précédemment.

Je laisse le choix aux modérateurs de supprimer le message, ou non.
Cyborg est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h34.


 
 
 
 
Partenaires

Hébergement Web