Tu n'utilises pas bien .BOF
En fait la propriété BOF "est l'enregistrement" qui précède le premier de la table.
En gros quand tu fais :
if not enr.bof then
enr.moveprevious
call Affectation_champ_texte
...
tu vérifies que tu es sur un enreg, puis tu vas au précédent, c'est à dire: si tu es sur le premier enreg de la table, .BOF renvoie False, puis tu vas au précédent (BOF=True) et tu enchaines sur Affectation_champ_texte alors que enr n'est plus synchro sur un enreg !!
Il faut faire d'abord le enr.moveprevious, puis ton test enr.bof
J'espère que c'est clair ?
A+