program moulin_html;

var f,f2:text;
    l:string;

const  charset1:array[1..30] of string[8]=
      ( {'<'}  '& lt;',     {'>' } '& gt;',
        {'"' } '& quot;',   {'é' } '& eacute;',
        {'è' } '& egrave;', {'ê' } '& ecirc;',
        {'ë' } '& euml;',   {'î' } '& icirc;',
        {'ï' } '& iuml;',   {'ù' } '& ugrave;',
        {'û'& nbsp;} '& ucirc;',  {'ü' } '& uuml;',
        {'ô' } '& ocirc;',  {'â' } '& acirc;',
        {'ä' } '& auml;',   {'É'} '& Eacute;',
        {'à' } '& agrave;', {'á' } '& aacute;',
        {'ö' } '& ouml;',   {' ' } '& nbsp;',
        {'ç'} '& ccedil;',  {'Æ'} '& AElig;',
        {'æ' } '& aelig;',  {'|'} '|',
        {'-'}'-',          {'+'}'+',
        {'+'}'+',          {''}'+',
        {''}'+',          {''}'+');

const  charset2:array[1..30] of char=
      ( '<' {'& lt;'},     '>' {'& gt;'},
        '"' {'& quot;'},   'é' {'& eacute;,},
        'è' {'& egrave;'}, 'ê' {'& ecirc;'},
        'ë' {'& euml;'},   'î' {'& icirc;'},
        'ï' {'& iuml;'},   'ù' {'& ugrave;'},
        'û' {'& ucirc;'},  'ü' {'& uuml;'},
        'ô' {'& ocirc;'},  'â' {'& acirc;'},
        'ä' {'& auml;'},   'É' {'& Eacute;'},
        'à' {'& agrave;'}, 'á' {'& aacute;'},
        'ö' {'& ouml;'},   ' ' {'& nbsp;'},
        'ç' {'& ccedil;'}, 'Æ' {'& AElig;'},
        'æ' {'& aelig;'},  '|',
        '-',              '+',
        '+',              '',
        '',              '' );

Var x,disque:integer;
    rep:string;
begin
   getdir(disque,rep);
   chdir('C:\INTERNET\HTDOGPRO\SITE_INT\PERSONEL');
   assign(f,'lentille.asc');
   assign(f2,'lentille.ans');
   reset(f);
   rewrite(f2);
   while not eof(f) do
   begin
    readln(f,l);
    for x:=1 to 27 do
        begin
          while pos(charset2[x],l)<> 0 do
          begin
               insert(charset1[x],l,pos(charset2[x],l));
               delete(l,pos(charset2[x],l),length(charset2[x]));
          end;
        end;
    write(f2,l,'<br>');
    writeln(l);
   end;
 close(f);
 close(f2);
 chdir(rep);
end.
"
Noter que pour inverser la moulinette, pour supprimer les codes html des caractères non-ansi, il suffit d'inverser le nom des tableaux de constantes, charset1 devient charset2 et le tour est joué.
voilà voilà.

Peut-être qu'une macro pou winword serait plus intéressante.