Une fois qu'on a touché à Access, qui n'a pas rêvé de faire des SQL sur des plages de cellules ?
C'est maintenant à portée en utilisant DAO (pour ADO se référer au tutoriel de Silkyroad sur les classeurs fermés).
1 2 3 4 5 6 7 8 9 10 11 12
| Sub DoCmdRunSQL(ByVal sql As String, ByVal rDest As Range)
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = DAO.OpenDatabase(ActiveWorkbook.FullName, False, False, "Excel 8.0;HDR=YES;")
Set rs = db.OpenRecordset(sql, DAO.dbOpenSnapshot)
rDest.CopyFromRecordset rs
Set rs = Nothing
Set db = Nothing
End Sub |
un exemple d'appel de la sub
DoCmdRunSQL "SELECT * FROM [feuil1$A3:D600] WHERE age > 18", sheets("Résultat").range("A1")
pour mettre le résultat de la requête en A1 de la feuille Feuil2
la table s'écrit [nomonglet$plage]
Partager