bissect[f_][{a_,b_}]:=Module[{x},x=((a+b)/2);If[f[a] f[x]≤0,{a,x},{x,b}]]

affiche[f_][{a_,b_}]:={N[a],Sign[f[a]],N[b],Sign[f[b]],N[((a+b)/2)],Sign[f[((a+b)/2)]]}

affiche[f_, ϵ_][{a_,b_}]:={N[a],Sign[f[a]],N[b],Sign[f[b]],ϵ Round[((a+b)/(2 ϵ))],Sign[f[((a+b)/2)]]}

bissection[f_,{a_,b_},n_]:=Module[
{t},
t=Map[affiche[f],NestList[bissect[f],{a,b},n]];
t=ReplacePart[t,"",{{-1,-2},{-1,-1}}] ;(*Elimine le calcul de (a+b)/2 et f((a+b)/2) dans le dernier élèment de la liste des itérations*)
TableForm[t,TableHeadings->{None,{"a","Sign(f(a))","b","Sign(f(b))","((a + b)/2)","Sign(f(((a + b)/2)))"}}]
]

bissect[f_, ϵ_][{a_,b_}]:=Module[{x},
x=ϵ Round[((a+b)/(2 ϵ))];(*Arrodi (a+b)/2 à la précision recherchée*)
If[f[a] f[x]≤0,{a,x},{x,b}]
]

bissection[f_,{a_,b_},n_, ϵ_]:=Module[
{t},
t=Map[affiche[f,ϵ],NestList[bissect[f, ϵ],{a,b},n]];
t=ReplacePart[t,"",{{-1,-2},{-1,-1}}];
TableForm[t,TableHeadings->{None,{"a","Sign(f(a))","b","Sign(f(b))","((a + b)/2)","Sign(f(((a + b)/2)))"}}]
]