D'abord, merci pour la réponse ... Je viens de passer une bonne heure à fouiller le net, et j'ai appris des tas de trucs

, mais je ne vois pas comment l'appliquer à mon cas.
Effectivement, la possibilité de travailler avec un recordset déconnecté pourrait être intéressante pour moi, mais ce n'est pas le noeud de mon pb. En effet, que mon objet Recordset soit connecté ou non, je ne peux pas l'interroger pour créer un nouveau recordset.
Je suis ensuite parti sur les objets QueryDef (on peut créer des QueryDef temporaire) et TableDef (mais là, inutilisable : j ene veux surtout pas créer de nouvelles tables dans la base).
La méthode GetRow pourrait m'intéresser, je créer mon recordset et je sors tous les enregistrements dans un tableau qui est en quelque sorte, l'image à plat de mon recordset, et donc, quelque part, la "mini" base de données sur laquelle je veux travailler. Mais je ne vois pas comment faire l'équivalent de ma requête dedans, sauf à créer des boucles contrôlant chaque enregistrement du tableau. Mais bon, 5 boucles imbriquées pour vérifier un tableau qui fait 500 lignes sur 37 colonnes, je ne suis pas fan ^^
Je vais essayer d'illustrer plus précisément ce que je veux faire.
Table Clients
Ville Dpt Region Profession
Rennes 35 Bretagne Artisan
Lorient 56 Bretagne Ouvrier
Paris 75 Ile de France Artisan
Nantes 44 Pays de la Loire Artisan
Ma requête telle qu'elle est faite actuellement, correspondrait à :
Set objDBConnection = WScript.CreateObject("ADODB.Connection")
Set RS = WScript.CreateObject("ADODB.Recordset")
objDBConnection.open Blablablabla ...
SQL = "SELECT * FROM Clients WHERE ((Region = 'Bretagne) OR (Dpt ='44') AND (Profession = 'Artisan'))"
RS.open SQL,objDBConnection,1,1
Ce qui fait donc que j'ai crée un recordset RS, qui contient les infos suivantes :
Rennes 35 Bretagne Artisan
Nantes 44 Pays de la Loire Artisan
C'est cette requête qui me prend 20 secondes.
Voici ce que j'aimerai réussir à faire :
Set objDBConnection = WScript.CreateObject("ADODB.Connection")
Set RS = WScript.CreateObject("ADODB.Recordset")
objDBConnection.open Blablablabla ...
SQL = "SELECT * FROM Clients WHERE (Profession = 'Artisan')"
RS.open SQL,objDBConnection,1,1
Le Recordset RS crée contient
Rennes 35 Bretagne Artisan
Paris 75 Ile de France Artisan
Nantes 44 Pays de la Loire Artisan
Cette requête ne me prend que 3-4 secondes (ce qui est acceptable cette fois).
A ce niveau, je pourrais couper la connection pour être sûr de ne plus toucher à ma base de données, et je voudrais pouvoir ouvrir un recordset du type :
SQL = "SELECT * FROM RS WHERE ((Region = 'Bretagne) OR (Dpt ='44'))"
RSBis.open SQL,objDBConnection,1,1
Là, à la rigueur, que ça prenne 10, 15 ou même 20 secondes, ça n'a aucune importance puisque je suis en local sur mon poste.
Crée un QueryDef me semblait une piste intéressante, pour remplacer mon RS. Mais si j'ai bien compris, un QueryDef, c'est juste une requête donc, les enregistrements ne sont pas inclus et si je l'interroge, en fait, je vais recrée ma requête entière et donc, je n'aurais rien gagné.
Je ne sais pas si je suis très clair en fait, je m'en rends compte

Sinon, et bien, il me restera la solution d'extraire ma requête initiale dans un fichier Excel ou une Base ACCESS et refaire tous mes tris derrière, mais je voudrais limiter au maximum les manips.
Merci.
Molenn