C'est une possibilité qui est facilitée avec WD11, et les tables hiérarchiques (c'est un peu gadget à 1ere vue, mais ç apeut être pratique ^^).
Enfin, si tu es limitée à la version 10, je te conseille de ne pas lier la table à la requête, mais de la remplir par programmation.
Ca pourrait donner un truc du genre : (code tapé à la volée donc risque d'erreurs) :
sCycle est une chaine = ""
sCycleEnCours est une chaine = ""
HExécuteRequete(maRequete)
POUR TOUS maRequete
SI numériqueVersChaine(maRequete.Cycle) <> sCycleEnCours ALORS
sCycleEnCours = numériqueVersChaine(maRequete.Cycle)
sCycle = sCycleEnCours
SINON
sCycle = ""
FIN
TableAjouteLigne(table_cycles, sCycle, blabla....)
FIN
J'utilise des chaînes au lieu d'entiers pour pas que tu aies des 0 pour les lignes vides (il y a aussi la propriété "mise à blanc si nul" de l'éditeur ^^)
Voilà, il y a peut être moyen de faire plus simple, mais c'est la 1ère solution à laquelle j'ai pensé.
Tu peux aussi, par exemple, colorer la 1ère ligne de tel cycle pour qu'on voit mieux où commence chaque cycle.
J'espère que ça t'aidera, et bon courage :)