
Alterner les couleurs de fond dans un tableau : une ligne sur deux (ODS et PROC REPORT)
août 30, 2009Ces semaines passées, je vous ai proposé une syntaxe pour changer le style des cellules d’un tableau généré sous SAS avec PROC REPORT. Aujourd’hui, je vous propose une variante permettant de changer la couleur de fond une ligne sur deux. L’exemple utilise une sortie PDF. Le programme peut s’appliquer aux sorties RTF et TAGSETS.EXCELXP.
1. Le programme
Dans PROC REPORT, l’instruction CALL DEFINE contenu entre les instructions COMPUTE et ENDCOMP permet de modifier le style des lignes dans un tableau.
La notion de RETAIN : Dans l’exemple qui suit une variable nommée CNT est créée avec un RETAIN implicite. Le changement de couleur de fond est fonction de la valeur prise par cette variable. Vous pouvez également utilisée une variable déjà existante dans le data set lu.
La foncton MOD() : Le modulo est le résidu d’une division. La fonction MOD() avec un modulo 2 permet de distinguer les valeurs pairs des valeurs impaires. Ici à chaque fois que la valeur CNT a une valeur pair, le fond est mis en gris.
ods listing close;
ods pdf file=‘C:/sasref/zebre.pdf’;
proc report data=sashelp.class nowd;
columns name age;
define name / display;
define age / display;
compute name;
cnt+1;
if mod(cnt,2) then call define (_row_,‘style’,‘style=[background=lightgrey]’);
endcomp;
run;
ods pdf close;
ods listing;
2. Le résultat
Lectures complémentaires
Bonjour,Excellent technique, à laquelle je n’avais pas pensé, alors que je cherchais justement un système.
Pour autant, je suis amené à utiliser plus les proc tabulate que les report (pour les totaux qui sont mieux gérés en tabulate), le tout associé à un template que va bien. La technique présentée ici est-elle intégrable dans une proc template afin de retrouver tout ça dans mes sorties de proc tabulate ?
Par avance merci pour les réponses.