Bonsoir,
Si tu importes tes données dans Excel à partir d'un recordset, tu peux essayer deux instructions SQL.
Dans cet exemple le champ ID de la table LaTable est un champ clé.
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
| Dim db As DAO.Database, rs As DAO.Recordset
Dim strSQL As String
Set db = DBEngine.Workspaces(0).OpenDatabase("C:\TEMP\data\DB1.mdb")
' 1ère partie
strSQL = "SELECT LaTable.*" & vbCrLf & _
"FROM LaTable" & vbCrLf & _
"WHERE (((LaTable.ID)<(SELECT MAX(Tmp2.ID) FROM (SELECT TOP 1000000 tmp1.ID FROM LaTable As Tmp1) As Tmp2 )));"
Set rs = db.OpenRecordset(strSQL)
Me.Worksheets(2).Range("A1").CopyFromRecordset rs
rs.Close
' 2ème partie
strSQL = "SELECT LaTable.*" & vbCrLf & _
"FROM LaTable" & vbCrLf & _
"WHERE (((LaTable.ID)>=(SELECT MAX(Tmp2.ID) FROM (SELECT TOP 1000000 tmp1.ID FROM LaTable As Tmp1) As Tmp2 )));"
Set rs = db.OpenRecordset(strSQL)
Me.Worksheets(3).Range("A1").CopyFromRecordset rs
rs.Close
Set rs = Nothing
db.Close
Set db = Nothing |
La première instruction SQL (appelons la instruc1) utilisée dans le code ci-dessus :
1 2 3
| SELECT LaTable.*
FROM LaTable
WHERE (((LaTable.ID)<(SELECT MAX(Tmp2.ID) FROM (SELECT TOP 1000000 tmp1.ID FROM LaTable As Tmp1) As Tmp2 ))) |
Elle sélectionne tous les enregistrements de la table LaTable dont le champ clé ID a une valeur inférieure à celle renvoyée par l'expression SQL
(SELECT MAX(Tmp2.ID) FROM (SELECT TOP 1000000 tmp1.ID FROM LaTable As Tmp1) As Tmp2 )
Cette expression renvoie la plus grande valeur du champ clé ID dans les 1000000 premiers enregistrements.
instruc1 renvoie donc les 999999 premiers enregistrements de la table LaTable.
La deuxième instruction SQL (complément de la première) :
C'est un copier/coller de la première instruction.
La différence se situe au niveau du WHERE où l'opérateur de comparaison < a été remplacé par >=.
Ces deux instructions SQL pourraient être des requêtes créées dans la base Access.
Mais apparemment tu as Office 2007 et ne connaissant pas, je ne peux t'expliquer comment créer ces requêtes.
A+
Partager