Comment fusionner des cellules d’une même colonne dans un tableau ?#
Certains tableaux nécessitent une cellule qui s’étendent sur plusieurs lignes. Le cas classique est celui où la colonne la plus à gauche étiquette le reste de la table. Si cette présentation peut être éventuellement traitée en utilisant une séparation diagonale comme vu à la question « Comment diviser une cellule par une diagonale ? », cette technique reste très limitée. Voici des solutions plus générales.
1. Avec l’extension multirow#
L’extension multirow vous permet de construire des cellules s’étendant sur plusieurs lignes. Par exemple :
\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{multirow}
\begin{document}
\begin{tabular}{|c|c|}
  \hline
  \multirow{4}{*}{Texte multiligne}
    & Ligne 1 \\
    & Ligne 2 \\
    & Ligne 3 \\
    & Ligne 4 \\
  \hline
\end{tabular}
\end{document}
L’extension centrera verticalement « Texte multiligne » dans la cellule étendue. Notez que les lignes qui ne contiennent pas la spécification multiligne doivent avoir des cellules vides pour laisser la place à la cellule multiligne.
Le symbole * peut être remplacé par une largeur de colonne. Dans ce cas,
le contenu de la cellule multiligne peut contenir des sauts de ligne imposés :
\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{multirow}
\begin{document}
\begin{tabular}{|c|c|}
  \hline
  \multirow{4}{25mm}{Texte%
    \\multiligne}
    & Ligne 1 \\
    & Ligne 2 \\
    & Ligne 3 \\
    & Ligne 4 \\
  \hline
\end{tabular}
\end{document}
Un effet similaire (permettant un peu plus de sophistication) peut être obtenu
en mettant un tableau plus petit qui aligne le texte dans une commande
\multirow utilisant *.
La commande \multirow peut également être utilisée pour placer
des textes écrits verticalement d’un côté ou de l’autre d’un tableau
(à l’aide de l’extension graphicx qui fournit la commande
\rotatebox) :
\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{multirow}
  \usepackage{graphicx}
\begin{document}
\begin{tabular}{|l|l|}
  \hline
  \multirow{4}{*}{%
    \rotatebox{90}{Texte}}
    & Ligne 1 \\
    & Ligne 2 \\
    & Ligne 3 \\
    & Ligne 4 \\
  \hline
\end{tabular}
\end{document}
Cet exemple donne un texte qui va vers le haut. Pour un texte allant
vers le bas, il faudrait prendre un angle de -90.
Pour créer une cellule s’étendant sur plusieurs lignes et plusieurs colonnes,
il faut inclure la commande \multirow à l’intérieur de la commande
\multicolumn, l’inverse ne fonctionnant pas :
\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{multirow}
\begin{document}
\begin{tabular}{|c|c|c|}\hline
  \multicolumn{2}{|c|}{
   \multirow{2}{*}{Cellules combinées}}
     & Haut droit \\ \cline{3-3}
   \multicolumn{2}{|c|}{}  & Centre droit \\ \hline
   Bas gauche & Bas centre  & Bas droit \\ \hline
\end{tabular}
\end{document}
L’extension multirow est configurée pour interagir
avec l’extension bigstrut (abordée dans la question
« Comment améliorer l’espacement entre les lignes d’un tableau ? »).
Vous pouvez utiliser un argument facultatif de la commande \multirow
pour dire combien de lignes de votre cellule multiligne sont ouvertes
avec \bigstrut.
La documentation de multirow et de bigstrut se trouve, sous forme de commentaires, dans les fichiers des extensions elles-mêmes.
2. Avec l’extension tabularray#
L’extension tabularray propose une syntaxe plus unifiée pour
présenter des tableaux. Au sein de son environnment tblr, elle traite
en particulier la fusion des cellules avec sa commande \SetCell placée
dans la cellule qui doit être s’étaler dans le tableau. Elle a
pour syntaxe :
\SetCell[r=⟨hauteur⟩,c=⟨largeur⟩]{⟨alignement⟩}
Dans cette syntaxe, ⟨hauteur⟩ est le nombre de lignes fusionnées,
⟨largeur⟩ le nombre de colonne fusionnées tandis que ⟨alignement⟩
vaut c,l ou r selon les conventions usuelles d’alignement
dans les tableaux.
L’extension propose également une variante syntaxique où les définitions de fusion peuvent se faire dans l’en-tête du tableau avec l’option
cell{⟨x⟩}{⟨y⟩}={r=⟨hauteur⟩,c=⟨largeur⟩}{⟨alignement⟩}
Ici, ⟨x⟩ et ⟨y⟩ désignent les coordonnées de la cellule à modifier
dans le tableau.
Voici un exemple des deux méthodes :
\documentclass[french]{article}
  \usepackage[T1]{fontenc}    % Encodage T1 (adapté au français)
  \usepackage{lmodern}        % Caractères plus lisibles
  \usepackage{babel}          % Réglages linguistiques (avec french)
  \pagestyle{empty}           % N'affiche pas de numéro de page
  \usepackage{tabularray}
\begin{document}
Un tableau avec le code de fusion dans les cellules :
\begin{table}[h]
\centering
\begin{tblr}{|c|c|}
  \hline
  \SetCell[r=4]{c} Texte multiligne & Ligne 1 \\
  Ho !                              & Ligne 2 \\
  Hooooo !                          & Ligne 3 \\
  Hooooooooooooooooooooooooo !      & Ligne 4 \\
  \hline
\end{tblr}
\end{table}
Le même tableau avec le code de fusion dans l'en-tête
du tableau :
\begin{table}[h]
\centering
\begin{tblr}{colspec={|c|c|},cell{1}{1}={r=4}{c}}
  \hline
  Texte multiligne & Ligne 1 \\
                   & Ligne 2 \\
                   & Ligne 3 \\
                   & Ligne 4 \\
  \hline
\end{tblr}
\end{table}
\end{document}
À faire
Poursuivre la rédaction d’exemples.
D’autres fonctionnalités de cette extension sont présentées à la question « Comment construire un tableau avec le package tabularray ? ».