SQL dans VBA sous Excel (Classeur fermé)
Bonjour à tous,
Je cherche à lier deux fichiers excel via des requêtes SQL programmé sous VBA. J'ai, grâce au tutoriel de SilkyRoad, réussi à aller les chercher les données dans un classeur fermé grace à ces requêtes mais maintenant je voudrais pouvoir lier deux classeurs fermés et rassembler les données ensembles. et faire la somme par ID.
Donc j'ai un autre classeur qui se nomme auto1 dont je veux assembler avec le classeur auto ci-dessous dans le code.
Merci pour votre aide
Voila mon programme que j'ai pour l'instant pour la lecture du premier classeur auto:
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
Sub Loading_players()
class = "C:\Bibliothèques\Documents\auto.xlsx"
'Permet d'enlever les espaces et les "é" accent dans les en-tête pour les définir comme clefs en SQL
Set wb = Workbooks.Open(class)
For i = 1 To 50
Sheets(1).Cells(1, i) = Replace(Sheets(1).Cells(1, i), " ", "_")
Sheets(1).Cells(1, i) = Replace(Sheets(1).Cells(1, i), "é", "e")
Next
wb.Save
wb.Close
Dim Cn As ADODB.Connection
Dim Fichier As String
Dim NomFeuille As String, TxtSQL As String
Dim Rst As ADODB.Recordset
'Définit le classeur fermé servant de base de données
Fichier = "C:\Bibliothèques\Documents\auto.xlsx"
'Nom de la feuille dans le classeur fermé
NomFeuille = "auto"
Set Cn = New ADODB.Connection
'--- Connexion ---
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
.Open
End With
'-----------------
'
'Définit la requête.
'/!\ Attention à ne pas oublier le symbole $ après le nom de la feuille.
TxtSQL = "SELECT ID_joueur, SUM(Nom_points_gagnés), SUM(Nombre_points_perdus) FROM [" & NomFeuille & "$], GROUP BY ID_joueur"
Set Rst = New ADODB.Recordset
Set Rst = Cn.Execute(TxtSQL)
'Ecrit le résultat de la requête dans la cellule A1
Feuil11.Range("A1").CopyFromRecordset Rst
'--- Fermeture connexion ---
Cn.Close
Set Cn = Nothing
End Sub |