Mikelenain a écrit :Voilà la solution avec un tableau ET un diagramme en bâtons, gérés dynamiquement
Sans vouloir être désagréable, ce n'est pas « géré dynamiquement » car si vous ajoutez un jour, le graphique foire. Pareil si une valeur est supérieure à 50...
On peut rendre le truc un peu plus automatique. J'ai également mis à profit les possibilités de listofitems pour ne lire qu'une seule liste de la forme <jour>/<valeur>.
Code : Tout sélectionner
\documentclass[a4]{article}
\usepackage{multido,listofitems,pstricks-add}
\usepackage[margin=1.5cm]{geometry}
\def\addtotok#1#2{#1\expandafter{\the#1#2}}
\def\truncdiv#1#2{\numexpr(#1-(#2-1)/2)/#2\relax}
\newtoks\tabtoksa\newtoks\tabtoksb
\def\readdays#{\setsepchar[*]{,*/}\ignoreemptyitems\readlist*\days}
\def\updatetoks#1/#2\nil{\addtotok\tabtoksa{}\addtotok\tabtoksb{}\ifnum#2>\maxval\def\maxval{#2}\fi}
\def\buildtab{%
\tabtoksa{Jour}\tabtoksb{Durée}\def\maxval{0}%
\foreachitem\xday\in\days{\expandafter\updatetoks\xday\nil}%
\edef\maxval{\the\numexpr\truncdiv\maxval{10}*10+10\relax}%
\begin{tabular}{*{\number\numexpr\dayslen+1}{|c}|}\hline
\the\tabtoksa\\\hline
\the\tabtoksb\\\hline
\end{tabular}%
}
\def\builddiagbatons{%
\psset{xunit=1cm, yunit=0.1cm}%
\begin{pspicture*}(-1,-15)({\number\numexpr\dayslen+2},{\the\numexpr\maxval+20})
\multido{\i=1+1}{\dayslen}{%
\psline[linestyle=dotted](\i,0)(\i,\maxval)%
\psline[linestyle=solid](\i,-1)(\i,1)%
\rput[Br]{45}(\i,-3){\days[\i,1]}%
\psline{-*}(\i,0)(\i,\days[\i,2])%
}%
\multido{\i=10+10}{\truncdiv\maxval{10}}{%
\psline[linestyle=dotted](0,\i)({\number\numexpr\dayslen+1},\i)%
\psline[linestyle=solid](-0.1,\i)(0.1,\i)%
\rput[Br](-0.5,\i){\i}%
}%
\psline[arrowscale=2]{->}(0,0)({\number\numexpr\dayslen+1},0)%
\rput({\number\numexpr\dayslen+1},-5){Jour}%
\psline[arrowscale=2]{->}(0,0)(0,\maxval)%
\rput(0.5,{\the\numexpr\maxval+5}){Durée (en min)}%
\end{pspicture*}%
}
\begin{document}
\readdays{Lundi/35,Mardi/20,Mercredi/40,Jeudi/20,Vendredi/15}
\buildtab\par
\builddiagbatons
\bigbreak
\readdays{Lundi/55,Mardi/35,Mercredi/40,Jeudi/65,Vendredi/20,Samedi/60,Dimanche/25}
\buildtab\par
\builddiagbatons
\end{document}