Bonjour à tous,
J'ai un classeur .xlsm qui contient une requête SQL sur les données internes de ce même classeur.
Lorsque je modifie les données des tables sur lesquelles je fait une requête de jointure, le résultat de la requête ne tient pas compte des données modifiées.
Je suis obligé de sauvegarder et de fermer le classeur et de le rouvrir à chaque mise à jour.
Si je sauvegarde simplement sans fermer, la mise à jour n'est pas prise en compte et la requête sql retourne les anciens résultats.
Une remarque: la première requête dure quelque secondes et les mises à jour (ratées) 2/10ème de secondes.
Auriez-vous une explication et une solution au mystère de la connexion rémanente?
Merci,
Francis
La procédure qui prend en paramètre la requête et la plage de destination:
rSQL = SELECT `Raw material producer`, `Material type`, `Commercial name`, Region, `Quater` FROM [Project$A1:G37], [Quaters$A1:A7] WHERE `Commercial name` IS NOT NULL AND `Quater` IS NOT NULL GROUP BY Region, `Raw material producer`, `Material type`, `Commercial name`, Region, `Quater` ORDER BY `Quater`, `Raw material producer`, `Material type`, `Commercial name`, Region
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 Sub RunSQL_Range(ByVal rSQL As String, ByVal rDest As Range) Dim Conn As ADODB.Connection Dim Rst As ADODB.Recordset Dim Fichier As String, Direction As String Set Conn = New ADODB.Connection With Conn .Provider = "Microsoft.ACE.OLEDB.12.0" .ConnectionString = "Data Source=" & ThisWorkbook.Path & "\" & ThisWorkbook.Name & _ ";Extended Properties=""Excel 12.0;HDR=YES"";" .Open End With Set Rst = New ADODB.Recordset With Rst .ActiveConnection = Conn .Open rSQL, , adOpenKeyset, adLockOptimistic, adCmdTableDirect End With rDest.CopyFromRecordset Rst Rst.Close Conn.Close Set Conn = Nothing Set Rst = Nothing End Sub
Partager