You can achieve this design with the etoc package.
The update adds code to handle the Chapter
vz. Annex
thing, in order for the correct (set up in French via Babel) heading in the TOC, depending on the case. In the book
class, the toc file does not contain the information that we have an annex, except via the change in the numbering which goes Alphabetical. It is easier to add something in the toc to inform etoc
of this, rather than testing in the chapter style if we have a Roman or an Alpha numbering.

\documentclass{book}
\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
\usepackage{etoc}
% Something very close to the desired design is obtained using:
% \etoctoclines
% \etocsetlevel{subsection}{3}
% \etocsetlevel{subsubsection}{6}
% \etocsettocdepth {3}
%
% But the way these etoc toc line styles are defined may look a bit
% frightening, thus we do not try to customize and define from scratch,
% starting from example from the sample code in section 30.5 of the
% manual
\renewcommand{\thechapter}{\Roman{chapter}}
\renewcommand*\etoctoclineleaders
{\hbox{\bfseries\normalsize\hbox to .75ex {\hss.\hss}}}
\newcommand*{\DotsAndPage}
{\nobreak\leaders\etoctoclineleaders\hfill\nobreak
\makebox[\rightskip][r]{\bfseries\normalsize\etocpage}\par}
\etocsetstyle {chapter}
{\parindent 0pt\leftskip 0pt\relax \rightskip .75cm
\nobreak
\etocskipfirstprefix}
{\pagebreak[3]\bigskip}
{\bfseries\large Chapter \etocnumber{} -- \etocname\par}
{}
\etocsetstyle {section}
{\parfillskip-\rightskip
\nobreak\medskip
\etocskipfirstprefix}
{\pagebreak[1]\smallskip\parfillskip-\rightskip}
{\bfseries\normalsize\etocnumber{} \etocname\DotsAndPage }
{\parfillskip 0pt plus 1fil\relax}
\etocsetstyle {subsection}
{\parfillskip 0pt plus 1fil\relax
\nobreak\smallskip}
{}
{\mdseries\normalsize\etocnumber~\etocname{} (\etocpage). }
{\par\medskip}
\newcount\cnta
\begin{document}
\tableofcontents
\chapter{My Chapter 1}
\section{My Section 1}
\subsection{My sub section 1}
\section{My Section 2}
\cnta 0
\loop
\advance\cnta 1
\subsection{My sub section \the\cnta}
\ifnum\cnta<4
\repeat
\chapter{My Chapter 2}
\section{My Section 1}
\subsection{My sub section 1}
\section{My Section 2}
\cnta 0
\loop
\advance\cnta 1
\subsection{My sub section \the\cnta}
\ifnum\cnta<14
\repeat
\end{document}
Extended code to handle Annexes (the \appendix
command) and unnumbered chapters (\backmatter
).
\documentclass{book}
\usepackage[frenchb]{babel}
\usepackage[T1]{fontenc}
%\usepackage[utf8]{inputenc}
\usepackage{etoc}
\renewcommand{\thechapter}{\Roman{chapter}}
% We start from the sample code in section 30.5 of the etoc
% manual ("using depth tags")
\renewcommand*\etoctoclineleaders
{\hbox{\bfseries\normalsize\hbox to .75ex {\hss.\hss}}}
\newcommand*{\DotsAndPage}
{\nobreak\leaders\etoctoclineleaders\hfill\nobreak
\makebox[\rightskip][r]{\bfseries\normalsize\etocpage}\par}
\etocsetstyle {chapter}
{\parindent 0pt\leftskip 0pt\relax \rightskip .75cm
\nobreak
\etocskipfirstprefix}
{\pagebreak[3]\bigskip}
{\bfseries\large
\etocifnumbered{\ChapterOrAnnex{} \etocnumber{} -- }{}\etocname\par}
{}
% THIS IS TO GET CHAPTER OR ANNEX CORRECTLY IN THE TOC.
\newcommand*\ChapterOrAnnex{\chaptername}
\let\oldappendix\appendix
\renewcommand\appendix{\oldappendix
\addtocontents{toc}{\def\protect\ChapterOrAnnex{\protect\appendixname}}}
\etocsetstyle {section}
{\parfillskip-\rightskip
\nobreak\medskip
\etocskipfirstprefix}
{\pagebreak[1]\smallskip\parfillskip-\rightskip}
{\bfseries\normalsize\etocnumber{} \etocname\DotsAndPage }
{\parfillskip 0pt plus 1fil\relax}
\etocsetstyle {subsection}
{\parfillskip 0pt plus 1fil\relax
\nobreak\smallskip}
{}
{\mdseries\normalsize\etocnumber~\etocname{} (\etocpage). }
{\par\medskip}
\newcount\cnta
\begin{document}
\tableofcontents
\chapter{My Chapter 1}
\section{My Section 1}
\subsection{My sub section 1}
\section{My Section 2}
\cnta 0
\loop
\advance\cnta 1
\subsection{My sub section \the\cnta}
\ifnum\cnta<4
\repeat
\chapter{My Chapter 2}
\section{My Section 1}
\subsection{My sub section 1}
\section{My Section 2}
\cnta 0
\loop
\advance\cnta 1
\subsection{My sub section \the\cnta}
\ifnum\cnta<14
\repeat
\appendix
\chapter{My Annex}
\section{My Section 1}
\subsection{My sub section 1}
\section{My Section 2}
\cnta 0
\loop
\advance\cnta 1
\subsection{My sub section \the\cnta}
\ifnum\cnta<6
\repeat
\backmatter
\chapter{My back matter}
\section{My Section 1}
\subsection{My sub section 1}
\end{document}

tocstyle
from the KOMAscript bundle?