I would do it with tabularx
and multirow
. Note the first argument of \multirow
is not the number of rows, but the number of lines, thus it really depends on the real contents of the rows, and requires an optional argument for a small correction. I also gave some vertical padding to the rows, setting \arraystretch
to a value > 1.
\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage[showframe]{geometry}
\usepackage{array, tabularx, multirow}%
\newcolumntype{Y}{>{\hsize=.34\hsize\arraybackslash}X}
\newcolumntype{Z}{>{\hsize=.66\hsize\arraybackslash}X}
\begin{document}
\begin{table}[!htb]
\centering\renewcommand\arraystretch{1.25}
\begin{tabularx}{0.8\linewidth}{|Y|Y|Z|Z|}
\hline
\multicolumn{2}{|l|}{\bfseries Fonction} & \bfseries Description & \bfseries Degré \\
\hline
\multirow{8}{\hsize}[1.2ex]{\centering Some labels (centred)} & A & I want this text to be justified & \multirow{8}{\hsize}[1.2ex] {\centering Some description (I want it to be centred)}
\\
\cline{2-3}
& B & I want this text to be justified & \\
\cline{2-3}
& C & I want this text to be justified & \\
\cline{2-3}
& D & I want this text to be justified & \\
\hline
\multicolumn{2}{|l|}{Some labels} & I want this text to be justified & Some labels \\
\hline
\end{tabularx}
\end{table}
\end{document}
c
columntype and\multicolumn
command (occasionally)