I don't think it would be a problem to modify the script as I've done.
But, I'm not a linux guru..may be this modification could induce some other problems..

The fact is that I checked the /etc/init.d/networking of another debian system (agnula) wich I run too..and it is the SAME file ! So, it is not buggous, because with agnula I don't have this network problem.
The problem is coming from somewhere else..but the modification I've made in the script just works for me..
If somebody could evaluate the consequences...

I don't know if you saw the modified script. Here it is again :

For info, the solution I adopted for now is modifying the
/etc/init.d/networking script as so (i just give the changes in comments) :

case "$1" in
start)
process_options
log_action_begin_msg "Configuring network interfaces"
###### JULIEN'S ADD (ifdown -a) #####
ifdown -a
if ifup -a; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
;;

stop)
if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts |
grep -qE '^(nfs[1234]?|smbfs|ncp|ncpfs|coda|cifs)$'; then
log_warning_msg "not deconfiguring network interfaces: network
shares still mounted."
exit 0
fi

log_action_begin_msg "Deconfiguring network interfaces"
##### JULIEN'S REMOVE --exclude=lo #####
# if ifdown -a --exclude=lo; then
if ifdown -a; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
;;

force-reload|restart)
process_options
log_action_begin_msg "Reconfiguring network interfaces"
#### JULIEN'S REMOVE --exclude=lo ####
# ifdown -a --exclude=lo || true
ifdown -a || true
if ifup -a --exclude=lo; then
log_action_end_msg $?
else
log_action_end_msg $?
fi
;;

Ciao.