bon alors:
1) la référence à la librairie des recordsets n'est pas utilisée, tu peux donc la virer
2) il serait intéressant que le CursorLocation sur la connexion et le recordset concordent. D'après MSDN, le recordset hérite de la valeur de la connexion, donc dans ton cas adUseServer par défaut.
3) à essayer si 2) donne pas de résultat probant: joue sur le type de locking. Surtout que dans le cas présent, tu fais un select et rien de plus, donc le readonly est suffisant dans ce cas là.
4) Tip d'optimisation: si tu comptes uniquement lire une fois ton recordset du premier au dernier record, ton CursorType devrait être adForwardOnly (= en avant uniquement). Il sera automatiquement positionné sur le premier enregistrement s'il y en a lorsque tu l'ouvres, plus qu'à faire une boucle (cfr ma FAQ en signature ).
5) autre tip d'optimisation: l'objet Command n'est pas obligatoire, tu peux parfaitement ouvrir un recordset en deux lignes: création du recordset, et ouverture en lui filant tous les paramètres d'un seul coup, mais le résultat sera rigoureusement identique