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 : Sélectionner tout - Visualiser dans une fenêtre à part
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