Rapport de ventes avec mise en forme conditionnelle
Le programme commence par définir plusieurs formats personnalisés avec PROC FORMAT. Ces formats associent des couleurs de fond et de texte à différentes plages de valeurs numériques. Ensuite, il configure l'Output Delivery System (ODS) pour générer un fichier HTML. Le cœur du script est PROC REPORT, qui crée un rapport tabulaire des ventes pour les produits de type 'OFFICE', groupés par région et pays. Une instruction ACROSS est utilisée pour pivoter les produits en colonnes distinctes. Enfin, des blocs COMPUTE sont utilisés pour calculer un total des ventes et pour appliquer dynamiquement les styles de couleur aux cellules de données et aux lignes de résumé en utilisant la fonction CALL DEFINE.
Analyse des données
Type : SASHELP
Les données proviennent de la table `prdsale` de la bibliothèque standard `SASHELP`. Un filtre `WHERE` est appliqué pour ne sélectionner que les enregistrements où `prodtype` est 'OFFICE'.
1 Bloc de code
PROC FORMAT
Explication : Ce bloc définit des formats de valeur pour la mise en couleur conditionnelle ('traffic lighting'). Des formats sont créés pour les couleurs de fond (préfixe 'b') et de police (préfixe 'f') pour différentes colonnes et totaux, en fonction de plages de valeurs spécifiques. Par exemple, le format `cback` colore le fond en rouge, jaune ou vert selon la valeur.
Copié !
proc format;
value cfore
low - 21000 = 'white'
21000< - 25000 = 'black'
75000 - high = 'white';
value cback
low - 21000 = 'red'
21000< - 25000 = 'yellow'
75000 - high = 'green';
value fchair
low - 23500 = 'white';
value bchair
low - 23500 = 'red';
value fdesk
low - 25000 = 'white';
value bdesk
low - 25000 = 'red';
value ftable
low - 21000 = 'white';
value btable
low - 21000 = 'red';
value ftotal
low - 72000 = 'white';
value btotal
low - 72000 = 'red';
value fregn
low - 73000 = 'white';
value bregn
low - 73000 = 'red';
run;
1
PROC FORMAT;
2
value cfore
3
low - 21000 = 'white'
4
21000< - 25000 = 'black'
5
75000 - high = 'white';
6
value cback
7
low - 21000 = 'red'
8
21000< - 25000 = 'yellow'
9
75000 - high = 'green';
10
value fchair
11
low - 23500 = 'white';
12
value bchair
13
low - 23500 = 'red';
14
value fdesk
15
low - 25000 = 'white';
16
value bdesk
17
low - 25000 = 'red';
18
value ftable
19
low - 21000 = 'white';
20
value btable
21
low - 21000 = 'red';
22
value ftotal
23
low - 72000 = 'white';
24
value btotal
25
low - 72000 = 'red';
26
value fregn
27
low - 73000 = 'white';
28
value bregn
29
low - 73000 = 'red';
30
RUN;
2 Bloc de code
PROC REPORT
Explication : Ce bloc génère le rapport final en format HTML. PROC REPORT structure les données de `sashelp.prdsale`, groupées par `region` et `country`, avec les produits pivotés en colonnes. Deux blocs `COMPUTE` sont essentiels : le premier applique des styles aux colonnes de ventes individuelles (`actual`) et aux lignes de résumé régionales. Le second calcule la colonne `totalsales` et lui applique également des styles conditionnels, ainsi qu'aux totaux de la rupture par région.
Copié !
ods listing close;
ods html style=default
path="&path\results"
body='ch8_4_6b.html';
title1;
proc report data=sashelp.prdsale(where=(prodtype='OFFICE'))
nowd;
column region country product,actual totalsales;
define region / group;
define country / group;
define product / across;
define actual / analysis sum
format=dollar8.
'Sales';
define totalsales / computed format=dollar10.
'Total Sales';
break after region / summarize suppress;
rbreak after / summarize;
compute actual;
if _break_ = ' ' then do;
call define('_C3_','style','style={background=bchair.
foreground=fchair.}');
call define('_C4_','style','style={background=bdesk.
foreground=fdesk.}');
call define('_C5_','style','style={background=btable.
foreground=ftable.}');
end;
else if _break_='REGION' then do;
call define(_row_,'style','style={background=bregn.
foreground=fregn.}');
end;
endcomp;
compute totalsales;
totalsales = sum(_c3_, _c4_, _c5_);
if _break_ = ' ' then do;
call define(_COL_,'style', 'style={background=btotal.
foreground=ftotal.}');
end;
else if _break_='REGION' then do;
call define(_col_,'style','style={background=cback.
foreground=cfore.}');
end;
endcomp;
run;
ods html close;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« Ce script illustre une maîtrise avancée de PROC REPORT. Contrairement aux options de style statiques, l'instruction CALL DEFINE permet un contrôle chirurgical de l'apparence au moment de l'exécution.
L'utilisation des noms de colonnes automatiques comme _C3_ ou _C4_ (générés par l'instruction ACROSS) combinée à la variable interne _BREAK_ permet d'appliquer des styles différents selon que l'on traite une ligne de détail ou une ligne de résumé. C'est une technique d'expert indispensable pour gérer des tableaux croisés dynamiques où le nombre de colonnes peut varier, tout en conservant une mise en page professionnelle et rigoureuse »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.