SAS9

Harmoniser le style des lignes de totaux avec les en-têtes dans PROC REPORT

Simon 5 vues

Lors de la création de rapports avec PROC REPORT, l'ajout d'une ligne de résumé (total global) est une opération courante, généralement réalisée via l'instruction RBREAK.

Par défaut, cette ligne de résumé adopte un style standard défini par le template ODS actif (souvent un fond gris clair ou blanc). Cependant, pour des raisons esthétiques ou de lisibilité, il est fréquent de vouloir que cette ligne de total ressemble exactement à la ligne d'en-tête du tableau (même couleur de fond, même police grasse, même couleur de texte).

Harmoniser le style des lignes de totaux avec les en-têtes dans PROC REPORT -

L'approche laborieuse : Le codage "en dur"

La première réaction naturelle est d'ouvrir le code source du template ODS, de repérer les codes couleurs hexadécimaux de l'en-tête (par exemple cx112277 pour le texte et cxEDF2F9 pour le fond dans le style HTMLBlue), et de les copier manuellement dans l'instruction.

SAS©
1
 
1/* À éviter : Code rigide et difficile à maintenir */
2rbreak after / summarize style=[fontweight=bold color=cx112277 backgroundcolor=cxEDF2F9];
3 
Bien que fonctionnelle, cette méthode pose problème : si vous changez de style ODS (par exemple de HTMLBlue vers Plateau), votre ligne de total ne s'adaptera pas et gardera les anciennes couleurs, créant un design incohérent.

La solution élégante : L'héritage de style

SAS© permet de référencer directement des éléments de style existants par leur nom, plutôt que de redéfinir leurs attributs un par un. L'élément de style qui contrôle l'apparence des titres de colonnes se nomme tout simplement Header.

Il existe deux manières simples d'appliquer ce style à votre ligne de résumé.

Méthode 1 : Application locale sur l'instruction RBREAK

C'est la méthode la plus précise si vous souhaitez cibler uniquement le total global généré par RBREAK.

1PROC REPORT DATA=sashelp.class;
2 columns sex weight;
3 define sex / group;
4 define weight / analysis mean f=5.2;
5
6 /* On applique directement le style 'Header' à la ligne de résumé */
7 rbreak after / summarize style=Header;
8RUN;

Méthode 2 : Application globale via l'option STYLE

Vous pouvez également définir ce comportement au niveau de l'instruction PROC REPORT elle-même. Cela indique à la procédure d'utiliser le style "Header" pour tout élément de type "summary".

1PROC REPORT DATA=sashelp.class style(summary)=Header;
2 columns sex weight;
3 define sex / group;
4 define weight / analysis mean f=5.2;
5
6 rbreak after / summarize;
7RUN;

Pourquoi utiliser cette méthode ?

L'avantage majeur est la portabilité. En utilisant style=Header, vous dites à SAS© : "Peu importe le template ODS que j'utilise (PDF, HTML, RTF), fais en sorte que mon total ressemble à mes titres". Si vous changez le style global de votre rapport, la ligne de total s'adaptera automatiquement sans que vous ayez à modifier une seule ligne de code.