Je viens de lire le tuto, surtout la partie sur la lecture des fichiers excel. Voici le code qui m'a intérressé:
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 32 33 34 35 36 37 38
|
Sub RequeteClasseurFerme()
Dim Cn As ADODB.Connection
Dim Fichier As String
Dim NomFeuille As String, texte_SQL As String
Dim Rst As ADODB.Recordset
'Définit le classeur fermé servant de base de données
Fichier = "C:\monClasseurBase.xls"
'Nom de la feuille dans le classeur fermé
NomFeuille = "Feuil1"
Set Cn = New ADODB.Connection
'--- Connection ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Data Source=" & Fichier & _
";Extended Properties=Excel 8.0;"
.Open
End With
'-----------------
'Définit la requête.
'/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
texte_SQL = "SELECT * FROM [" & NomFeuille & "$]"
Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(texte_SQL)
'Ecrit le résultat de la requête dans la cellule A2
Range("A2").CopyFromRecordset Rst
'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing
End Sub |
Si je comprends bien le code on lit le fichier excel et on extrait les données d'une plage spécifique qu'on spécifie dans la requête. Et pour l'écrire dans une table Access, je présume qu'il faut remplacer le code suivant:
Range("A2").CopyFromRecordset Rst
par un code de copie. On INSERT INTO le résultat de la requête avec des clauses WHERE (par exemple des colonnes communes, étant donné que les résultats doivent être copiés suivant les données de ces colonnes) dans la table qui contiendrait le résultat des requêtes qu'on aurait fait sur l'ensemble des 3 fichiers Excel.
Est-ce possible ? Ou c'est tiré par les cheveux ?
Partager