Tableaux croisés

Tout ce qui concerne le langage TeX/LaTeX et ses variantes. Ce langage est utilisable sur le forum via les balises tex.
[participation réservée aux utilisateurs inscrits]
Règles du forum
Merci de soigner la rédaction de vos messages et de consulter ce sujet avant de poster. Pensez également à utiliser la fonction recherche du forum.
bulledesavon
Utilisateur confirmé
Utilisateur confirmé
Messages : 48
Inscription : lundi 13 décembre 2021, 16:12
Statut actuel : Autre

Tableaux croisés

Message non lu par bulledesavon »

Bonjour,
Je souhaite faire un tableau croisé.
Voici mon code :
acb0999dea59207aa3520bc1dfefeaa036439db8.svg
Je souhaite dans la première cellule écrire "Candidats" et "Tranches d'âges" mais pas sur la même ligne; "Candidats" collé à droite et "Tranches d'âges" collé à gauche. Pouvez-vous m'aider s'il vous plaît ?
Merci.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: Tableaux croisés

Message non lu par MB »

Bonjour, je n'ai jamais trouvé de solution parfaitement satisfaisante visuellement pour ce genre de tableau.
Je peux proposer quelque chose de ce type.
7fc1bd55ef38a2d048a571d7dadf36c7e1600690.svg
Il est également possible d'utiliser le paquet diagbox, mais le résultat risque de pas être très esthétique non plus.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1136
Inscription : jeudi 25 novembre 2010, 22:10

Re: Tableaux croisés

Message non lu par marco56 »

On peut aussi faire :

Code : Tout sélectionner

\backslashbox{Candidats}{Tranches d'âge} & A & B & C & D & Total \\
avec le package slashbox.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: Tableaux croisés

Message non lu par MB »

Oui, diagbox est un évolution de slashbox, avec un licence Texlive-compatible.
diagbox is a replacement of old slashbox package. I write this package simply because that slashbox is not available in TEX Live for licening problems. slashbox has no explicit license information available, but diagbox is under LPPL.

diagbox is a modern alternative of slashbox. I changed the user interface to use a key-value syntax, get rid of some restrictions of slashbox, use pict2e to draw diagonal lines. Especially, this package also provides ability to make a box with two diagonal lines in it. All these can be obtained by a \diagbox command.

As a replacement of slashbox, diagbox package also provides compatible macros of slashbox, but the result is a little different.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1136
Inscription : jeudi 25 novembre 2010, 22:10

Re: Tableaux croisés

Message non lu par marco56 »

Ok, merci pour ces infos. C'est vrai que ce n'est pas très joli.
bulledesavon
Utilisateur confirmé
Utilisateur confirmé
Messages : 48
Inscription : lundi 13 décembre 2021, 16:12
Statut actuel : Autre

Re: Tableaux croisés

Message non lu par bulledesavon »

Je viens de télécharger le package slashbox. Où dois-je mettre ce package pour que lors de la compilation d'un fichier latex dans un dossier quelconque, je n'ai pas de problème de compilation ? Pour l'instant, je l'ai mis dans le dossier où je travaille en ce moment; mais si je change de dossier et crée un nouveau fichier latex, j'aurai un problème de compilation.
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1136
Inscription : jeudi 25 novembre 2010, 22:10

Re: Tableaux croisés

Message non lu par marco56 »

Cela dépend de ton installation.
Au pire, tu le mets dans un répertoire texmf personnel.
bulledesavon
Utilisateur confirmé
Utilisateur confirmé
Messages : 48
Inscription : lundi 13 décembre 2021, 16:12
Statut actuel : Autre

Re: Tableaux croisés

Message non lu par bulledesavon »

J'ai texstudio, latex est dans mes applications (j'ai un mac).
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1136
Inscription : jeudi 25 novembre 2010, 22:10

Re: Tableaux croisés

Message non lu par marco56 »

Ce n'est pas la réponse attendue.
Tout le monde a latex et texsudio n'est qu'un éditeur.
Je ne connais pas les mac et je ne pourrai t'aider sauf je t'ai déjà dit à mettre le package dans un texmf perso.
Une piste peut-être :
viewtopic.php?t=4083
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: Tableaux croisés

Message non lu par MB »

Si la distribution Texlive est utilisée, le paquet diagbox doit être disponible et installable (cf les messages précédents). Dans tous les cas, le résultat n'est pas très esthétique.
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
balf
Modérateur spécialisé
Modérateur spécialisé
Messages : 4065
Inscription : mercredi 02 janvier 2008, 23:18

Re: Tableaux croisés

Message non lu par balf »

Une autre possibilité, à mon avis plus esthétique, consisterait à mettre « tranches d'âge » dans une première colonne, le texte étant tourné de 90° dans un \multirow{6}{…}.
B. A.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: Tableaux croisés

Message non lu par MB »

Je suis du même avis, en utilisant de la même façon un \multicolumn pour « candidats ».
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
marco56
Utilisateur chevronné
Utilisateur chevronné
Messages : 1136
Inscription : jeudi 25 novembre 2010, 22:10

Re: Tableaux croisés

Message non lu par marco56 »

Oui, je me passerai du multirow vertical. Perso, je ferais comme ceci.

Code : Tout sélectionner

\documentclass{article}
\usepackage{multirow}
\begin{document}
\begin{center}
\renewcommand{\arraystretch}{1.5}% donne la distance entre les lignes
\setlength{\tabcolsep}{7mm}% donne la distance entre les colonnes
\begin{tabular}{|l|c|c|c|c|c|}
\hline
\multirow{2}{*}{Tranches d'âge} &
\multicolumn{5}{c|}{Candidats} \\
\cline{2-6}
& A & B & C & D & Total \\
\hline
18-24 ans &&&&& \\
\hline
25-34 ans &&&&& \\
\hline
35-44 ans &&&&& \\
\hline
45-64 ans &&&&& \\
\hline
65-74 ans &&&&& \\
\hline
75 ans et plus &&&&& \\
\hline
Total &&&&& \\
\hline
\end{tabular}
\end{center}
\end{document}
ba1ce972a2418f7c5f532efa6a6d1def2604dd79.svg
F. Pantigny
Utilisateur confirmé
Utilisateur confirmé
Messages : 19
Inscription : dimanche 07 juillet 2019, 14:37

Re: Tableaux croisés

Message non lu par F. Pantigny »

Il est aussi possible d'utiliser {NiceTabular} et sa commande \diagbox intégrée.

Code : Tout sélectionner

\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{center}
\renewcommand{\arraystretch}{1.5}% donne la distance entre les lignes
\setlength{\tabcolsep}{7mm}% donne la distance entre les colonnes
\begin{NiceTabular}{lccccc}[hvlines]
\rule[-4mm]{0pt}{10mm}
\diagbox{Candidats}{Tranches\\ d'âge}
& A & B & C & D & Total \\
18-24 ans \\
25-34 ans \\
35-44 ans \\
45-64 ans \\
65-74 ans \\
75 ans et plus \\
Total  \\
\end{NiceTabular}
\end{center}
\end{document}
Plusieurs compilations successives sont nécessaires car nicematrix utilise Tikz (ou plutôt PGF) en interne.
MB
Administrateur
Administrateur
Messages : 8058
Inscription : samedi 28 mai 2005, 14:23
Statut actuel : Enseignant
Contact :

Re: Tableaux croisés

Message non lu par MB »

J'en profite pour proposer la solution suggérée par balf.

Code : Tout sélectionner

\documentclass{article}
\usepackage{graphicx,multirow}
\begin{document}
\begin{center}
\renewcommand{\arraystretch}{1.5}% donne la distance entre les lignes
\setlength{\tabcolsep}{5mm}% donne la distance entre les colonnes
\begin{tabular}{c@{\hspace{1mm}}|l|c|c|c|c|c|}
\multicolumn{1}{c}{} & \multicolumn{1}{c}{} & \multicolumn{5}{c}{Candidats} \\[-2pt]
\cline{3-7}
\multicolumn{1}{c}{} & & A & B & C & D & Total \\
\cline{2-7}
\multirow{7}{*}{\rotatebox[origin=c]{90}{Tranches d'âge}} & 18-24 ans &&&&& \\
\cline{2-7}
 & 25-34 ans &&&&& \\
\cline{2-7}
 & 35-44 ans &&&&& \\
\cline{2-7}
 & 45-64 ans &&&&& \\
\cline{2-7}
 & 65-74 ans &&&&& \\
\cline{2-7}
 & 75 ans et plus &&&&& \\
\cline{2-7}
 & Total &&&&& \\
\cline{2-7}
\end{tabular}
\end{center}
\end{document}
ac300cda1c26772dfdc54133d90cf3ce5228a3d1.svg
MB. (rejoignez pCloud et bénéficiez de 10Go de stockage en ligne gratuits)
Pas d'aide en message privé. Merci de consulter ce sujet avant de poster votre premier message.
jmd
Utilisateur confirmé
Utilisateur confirmé
Messages : 75
Inscription : samedi 06 février 2016, 11:08

Re: Tableaux croisés

Message non lu par jmd »

Il y a une solution très facile avec le package makecell.
Si le package n'est pas dans votre distribution, on le trouve sur le CTAN, ainsi que la doc.

Code : Tout sélectionner

\begin{tabular}{|l|c|c|}
\hline
\diaghead{\theadfont Diag Columnmn Head II}{Tranches\\d'âges}{Candidats} &
A & B \\
\hline       
18-24 ans & & \\ 
\hline
\end{tabular}
Dernière modification par MB le samedi 18 décembre 2021, 12:59, modifié 1 fois.
iMac 27'' Intel Core i9 10 coeurs, 40 Go Ram, MacBook Pro 16", TeX Live
Laurentfz
Utilisateur confirmé
Utilisateur confirmé
Messages : 35
Inscription : vendredi 22 mai 2020, 20:30
Statut actuel : Enseignant

Re: Tableaux croisés

Message non lu par Laurentfz »

Bonjour,
peut-être devrai-je ouvrir un nouveau sujet mais mon problème concerne un tableau croisé...
Voici un ECM dans lequel \cline{1-1} ne donne pas un trait "épais" entre la deuxième et la troisième ligne.
Je galère là-dessus.
Quelqu'un a-t-il déjà eu ce soucis ?

Bonne journée.

Code : Tout sélectionner

\documentclass[12pt]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{fourier}
\usepackage[scaled=0.875]{helvet} 
\usepackage[left=2cm, right=2cm, top=1cm, bottom=1cm]{geometry}
\usepackage{xcolor} 
\usepackage{colortbl}


\begin{document}


\renewcommand{\arraystretch}{1.25}
\setlength{\arrayrulewidth}{0.9pt}

\begin{scriptsize}

   \begin{tabular}{|>{\columncolor{gray!25}}c|c|c|c|c|}
    \hline
     \rowcolor{gray!25}& A & B & C & D \\
       \hline
        1 & \multicolumn{1}{c|}{} & \multicolumn{3}{c|}{\textbf{blablabla}}  \\ 
         \cline{1-1}  \cline{3-5}
        2 &\multicolumn{1}{c|}{} & a & b & c  \\ \hline
      	3 &  \textbf{texte} & d & e & f  \\ \hline
  \end{tabular}
          
\end{scriptsize}

\end{document}
Arathorn
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 284
Inscription : mercredi 24 avril 2013, 19:47
Statut actuel : Enseignant

Re: Tableaux croisés

Message non lu par Arathorn »

Je ne saurais vous donner la réponse mais simplement une solution avec le paquet hhline et la commande \hhline{-~---} en remplacement de la ligne 25.
Laurentfz
Utilisateur confirmé
Utilisateur confirmé
Messages : 35
Inscription : vendredi 22 mai 2020, 20:30
Statut actuel : Enseignant

Re: Tableaux croisés

Message non lu par Laurentfz »

Merci.
Effectivement ça résout en partie le problème.
Mais j'obtiens un carré blanc dans le coin en bas à droite de la cellule de la 2e ligne 2e colonne.
Arathorn
Utilisateur éprouvé
Utilisateur éprouvé
Messages : 284
Inscription : mercredi 24 avril 2013, 19:47
Statut actuel : Enseignant

Re: Tableaux croisés

Message non lu par Arathorn »

Mais j'obtiens un carré blanc dans le coin en bas à droite de la cellule de la 2e ligne 2e colonne.
Je n'avais pas vu, trop heureux d'avoir eu une idée.

J'ai profité de votre question pour apprendre un peu plus le paquet tabularray et voici le résultat

Code : Tout sélectionner

\begin{scriptsize}
\begin{tblr}{colspec = { *{5}{c} } , hlines = {0.9pt} , vlines = {0.9pt} , %
						row{1} = {gray!25} , column{1} = {gray!25} , stretch = 0.82 , %
						cell{2}{3} = {cmd=\bfseries} , cell{4}{2} = {cmd=\bfseries} %
					}
& A & B & C & D \\
1 & \SetCell[r=2,c=1]{c} & \SetCell[r=1,c=3]{c} blablabla  & & \\ 
\cline{1-1}  \cline{3-5}
2 & & a & b & c  \\ 
3 &  texte & d & e & f  \\ 
\end{tblr}

\end{scriptsize}
Le carré blanc n'apparaît pas.
La clé stretch a été calculée par rapport à la taille de \scriptsize (8pt) pour une police de 12pt. Puis j'ai appliqué le même rapport de la commande \arraystretch.Il y a peut-être une façon plus rigoureuse.
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message