Oui, c'est normal...
Un "order by" fait que ODBC ne sais plus à quel enregistrement correspond chaque ligne.
D'où le tartine que j'ai mis dans le topic "Problème VB6 at ADO"
Je te l'avais déjà dit d'ailleur
Ne JAMAIS se servir des fonctions rs.update etc, car il y a un grand nombre de cas où ça ne passe pas.
Et les cas où ça passe, tu n'a aucune garantie que tu ne vas pas provoquer une erreur...
Toujours faire les modifs de la base à la mano... Oui, c'est lourd et chiant, mais il n'y a pas de solution plus simple...
En bidouillant tu trouveras toujours une parade (genre recopier ton RS non trié dans un objet LISTE et faire un tri dans l'objet... et hériter les modifs au rs...)
Mais c'est tout pourri et tu va au devant d'une instabilité certaine.