Je suis entété comme un mulet donc je vais essayer une dernière fois.
Il faudrait rajouter une condition à ton code ( qui est très bien), qui filtrerait ce critère dès le début.
Exemple : J'ai une ligne avec 150 col E(ID) , VERIFIED col I ,PENDING_MO col j et 5 col L( version )
2 eme ligne : 150 col E(ID), AFFIRMED_BO col I ,PENDING_MO col j et 4 col L( version )
3 eme ligne : 150 col E(ID), VERIFIED_BO col I ,PENDING_MO col j et 7 col L ( version )
4 eme ligne : 150 col E(ID), ABORT col I ,PENDING_MO col j et 2 col L ( version )
5 ème ligne : 150 col E(ID), CANCEL col k et 6 col L ( version )
Dans cet exemple c'est bien la ligne 5 eme qui contient CANCEL qui m'intéresse car si elle apparait dans un bloc d'ID, c'est elle que je veux récupérer ( malgré que ce ne soit pas la ligne la plus vieille cf valeur 6 col l > valeur 4 de la 2 eme ligne ).
S'il n'y avait pas cette 5 eme ligne, avec CANCEL, ce serait la ligne 2 qui m'intéresserait ( critères valables et version la plus ancienne).
Ce cas ( CANCEL ) arrive relativement peu souvent mais j'ai besoin qu'il soit traité de manière automatique.
Ta remarque de faire une recherche est pertinente, mais sachant que j'aurais déja appliqué ton code, il va falloir que je fasse une recherche manuelle, ce qui n'est pas très pratique. Au lieu de ça, je m'imagine qu'il doit être relativement simple de rechercher, au début de chaque nouvel ID, si ce nouveau 'lot d'ID' ne comporte pas un CANCEL. Si oui , on récupère cette ligne et on passe à l'ID suivant, sinon on contiue à appliquer les critères de ton code précédent qui marchent très bien.
Y vois-tu un peu plus clair ?