Archives pour juillet 2009

h1

Changer la couleur d’une ligne ou d’une colonne via PROC REPORT et ODS

juillet 30, 2009

Après vous avoir présenter comment changer la couleur d’une cellule dans un fichier .xls, je vous propose de voir comment changer la couleur de toute une colonne ou de toute une ligne avec PROC REPORT et ODS TAGSETS.EXCELXP. Cela est intéressant pour distinguer votre ligne/colonne TOTAL du reste de vos données. Notez que la syntaxe s’applique également avec ODS RTF et ODS PDF par exemple.

1. Changer le style de couleur pour une colonne

Pour changer la couleur d’une colonne, on utilisera STYLE(COLUMN)=[] dans l’instruction DEFINE de son choix.

Pour changer la couleur d’une ligne, il faudra passer par COMPUTE/ENDCOMP et CALL DEFINE. Pour changer la couleur d’une celulle, nous avions dans le précédent article utiliser _COL_ comme premier argument. Pour appliquer la couleur à toute la ligne, il suffira de remplacer ce premier argument par _ROW_.

ods listing close;
ods tagsets.excelxp file=‘C:/sasref/col_row_color.xls’;

proc report data=sashelp.class nowd;
column name age;
define name / ‘Nom’ display style(column)=[background=lightblue];
define age / ‘Age’ display;
compute age;
if age=15 then call define (_ROW_,’style’,’style=[background=lightblue foreground=red ]‘);
endcomp;
run;

ods tagsets.excelxp close;
ods listing;

Dans l’exemple ci-dessus la colonne Nom est mise en bleu clair. Les lignes où l’âge est égal à 15 ans sont mises en bleu clair également et le texte est mis en rouge.

2. Voir le résultat

xls_color_row_column

Lectures complémentaires

h1

Un moyen simple de changer les couleurs en fonction des valeurs prises par des variables dans un fichier .xls

juillet 26, 2009

Suite à la question de Pierre, je vous invite à découvrir comment changer la couleur de données selon leur valeurs dans un fichier .xls généré au moyen d’ODS TAGSETS.EXCELXP et PROC REPORT.

1. Le code de base à améliorer

ODS TAGSETS.EXCELXP FILE=’…xls ‘ / ODS TAGSET.EXCELXP CLOSE : Pour l’exemple, un fichier CLASS_COLOR.XLS est créé.

PROC REPORT : Il contient les données de la variable AGE disponibles dans la table SASHELP.CLASS.

ODS LISTING CLOSE/ODS LISTING : Aucune sortie n’est envoyée vers la destination traditionnelle LISTING le temps de la création du fichier .xls.

ods listing close;
ods tagsets.excelxp file=‘C:/sasref/class_color.xls’;
proc report data=sashelp.class nowd;
column age;
define age / ‘Age’ display;
run;
ods tagsets.excelxp close;
ods listing;

2. L’ajout de COMPUTE dans PROC REPORT

A présent les intructions COMPUTE et ENDCOMP englobe une condition. Si la variable AGE est égale à 15 alors tous la valeur 15 est mise en rouge (foreground=) et la couleur de fond de la cellule est bleu clair (background=).

Pour cela, on utilise CALL DEFINE si et seulement si AGE=15. CALL DEFINE est composé de trois paramètres :

  • _COL_
  • ’style’
  • ’style=[à compléter]‘

ods listing close;
ods tagsets.excelxp file=‘C:/sasref/class_color.xls’;
proc report data=sashelp.class nowd;
column age;
define age / ‘Age’ display;
compute age;
if age=15 then call define (_COL_,’style’,’style=[background=lightblue foreground=red]‘);
endcomp;
run;
ods tagsets.excelxp close;
ods listing;

3. Voir le résultat

xls_compute

4. Quelques styles supplémentaires

Pour compléter la liste des styles, vous avez par exemple:

  • Changer la taille des caractères : font_size=14pt (mettre en taille 14 points)
  • Changer l’inclinaison des caractères : font_style=italic (mettre en italique)
  • Changer l’épaisseur des traits formant les caractères : font_weight=bold  (mettre en gras)
  • Changer la police de caractères : font_face=”Courier New, Arial” (utiliser Courier New si disponible, sinon utiliser Arial).

Lectures complémentaires :

h1

Gérer les long titres (et pieds-de-page) insérés dans une feuille de calcul (ODS TAGSETS.EXCELXP)

juillet 17, 2009

Aujourd’hui je vous propose quelques options pour travailler l’affichage de longs titres et pieds-de-pages qui sont insérés dans une feuille de calcul. Cela complètera les articles Ajouter les titres et pieds-de-page dans une feuille de calcul (EMBEDDED_TITLES=, EMBEDDED_FOOTNOTES= et l’option ajoutée lors de la mise à jour de l’article SKIP_SPACE=) et Personnaliser l’apparence des titres et des pieds-de-page dans un fichier .xls (ODS TAGSETS.EXCELXP et PROC TEMPLATE).

Je vais continuer à utiliser le style XLS_TITL pour les couleurs, polices, etc. proposé dans le précédent article pour mes captures d’écran.

1. Par défaut, un titre partiellement visible

Lorsqu’un titre est plus long que la largeur fournie par les colonnes du tableau affiché, seule une partie du titre est visible.

03_xls_title

2. Une solution valable seulement sur les anciennes versions de TAGSETS.EXCELXP

Une solution est d’utiliser la place disponible par les autres cellules. L’instruction global OPTIONS NOCENTER suffira. Mais cette fonctionnalité ne fonctionne pas avec les dernières mises à jour de TAGSETS.EXCELXP.

3. Agrandir la hauteur de la ligne

Pour agrandir la hauteur de la ligne, il vous faudra utiliser l’option ROWS_HEIGHTS= composée de 7 nombres. Les quatrième et cinquième nombres font respectivement référence à la hauteur des lignes pour les titres et la hauteur des lignes pour les pieds-de-page.

Par défaut, on a: ROWS_HEIGHTS=’0,0,0,0,0,0,0′.

En appliquant cette option à notre exemple, cela donne : ROW_HEIGHTS=’0,0,0,45,40,0,0′.

04_xls_title

4. Le code pour l’exemple

ods listing close;
ods tagsets.excelxp file=‘C:/sasref/class.xls’ /*style=xls_titl*/
options(embedded_titles=‘yes’
embedded_footnotes=‘yes’
row_heights=’0,0,0,45,40,0,0′);

title ‘Titre sur 2 lignes’;
footnote ‘Pied-de-page sur 2 lignes’;
ods tagsets.excelxp;

proc report data=sashelp.class nowd;
columns name age;
define name/display ‘Nom’;
define age /display ‘Age’;
run;

ods tagsets.excelxp close;
ods listing;

Lectures complémentaires

h1

Personnaliser l’apparence des titres et pieds-de-page dans un fichier.xls (ODS TAGSETS.EXCELXP et PROC TEMPLATE)

juillet 14, 2009

Après vous avoir présenté les options EMBEDDED_TITLES et EMBEDDED_FOOTNOTES dans l’article : Ajouter les titres et pieds-de-page dans une feuille de calcul du fichier .xls, je vous propose de personnaliser l’apparence de vos titres au moyen d’un nouveau style créé dans une instruction PROC TEMPLATE.

1. Créer un style personnaliser pour ses titres et pieds de page

Le nouveau style s’appelle XLS_TITL. Comme base, nous prenons un style existant sous SAS : STYLES.DEFAULT et faisont quelques modification au niveau des titres et pieds-de-page.

proc template;
define style styles.xls_titl;
parent=styles.rtf;

style systemtitle from systemtitle /
background=transparent
foreground=#000000
font_style=roman
font_weight = medium
font_size=18pt
font_face=‘Arial’;

style systemfooter from systemfooter/
background=transparent
foreground=#000000
font_style=roman
font_weight = medium
font_size=14pt
font_face=‘Arial’;

end;
run;

  • BACKGROUND modifie la couleur de font des cellules (voir l’article : choisir ses couleurs sous SAS). Notez que le mot TRANSPARENT ne fonctionne pas avec la version 1.86 de TAGSETS.EXCELXP mais avec certaines versions plus anciennes.
  • FOREGROUND modifie la couleur du texte
  • FONT_STYLE empêche l’inclinaison par défaut (enlever l’italique : roman, mettre en italic : italic)
  • FONT_WEIGHT enlève la côté gras présent par défaut (enlever les gras : medium, mettre en gras : bold)
  • FONT_SIZE défini la taille des caractères
  • FONT_FACE liste les polices à utiliser. Si plusieurs polices sont listées entre guillemets, la première disponible sur l’ordinateur sera retenue.

2. Appeler le style dans l’instruction ODS TAGSETS.EXCELXP

L’option STYLE= a été ajouté dans la première instruction ODS TAGSETS.EXCELXP . Elle est suivie du nom du style créé préalablement. Cela donne STYLE=XLS_TITL.

ods listing close;
ods tagsets.excelxp file=‘C:/sasref/class.xls’ style=xls_titl
options(embedded_titles=‘yes’
embedded_footnotes=‘yes’);

title ‘Titre’;
footnote ‘Pied’;
ods tagsets.excelxp;

proc report data=sashelp.class nowd;
columns name age;
define name/display ‘Nom’;
define age /display ‘Age’;
run;

ods tagsets.excelxp close;
ods listing;

Pour le reste des explications concernant cette syntaxe, reportez-vous à l’article de la semaine dernière.

3. Voir le résultat

02_xls_title

Lectures complémentaires :

h1

Ajouter les titres et pieds-de-page dans la feuille de calcul du fichier .xls

juillet 9, 2009

Lors de la création d’un fichier .xls au moyen de la syntaxe ODS TAGSETS.EXCELXP sous SAS, le contenu des instructions TITLE et FOOTNOTE est envoyé respectivement dans l’entête et pied-de-page du fichier. Ils ne sont donc visibles qu’à l’impression.

Pour insérer le contenu des instructions TITLE et FOOTNOTE dans la feuille de calcul, il faudra ajouter deux options dans l’instruction ODS TAGSETX.EXCELXP : EMBEDDED_TITLES etEMBEDDED_FOOTNOTES.

1. Le code

Voici le code pour l’exemple. Vous noterez que j’ai rajouté une instruction ODS… juste après les instructions TITLE et FOOTNOTE. Cela permet à SAS de mettre à jour les titres et pieds-de-page qu’il a en mémoire. Cela sera pratique lorsque vous aurez plusieurs feuilles de calculs avec des titres différents. Autrement, vous pouvez ajouter les instructions TITLE et FOOTNOTES avant la première instruction ODS TAGSETS.EXCELXP.

ods listing close;
ods tagsets.excelxp file=‘C:/sasref/class.xls’
options(embedded_titles=‘yes’
embedded_footnotes=‘yes’);

title ‘Titre’;
footnote ‘Pied’;
ods tagsets.excelxp;

proc report data=sashelp.class nowd;
columns name age;
define name/display ‘Nom’;
define age /display ‘Age’;
run;

ods tagsets.excelxp close;
ods listing;

L’option NOWD est propre à un environnement Windows. Cela évite l’ouverture de la fenêtre REPORT

2. Voir le résultat

Résultat ods tagsets.excelxp options embedded_titles embedded_footnotes

3. Enlever les lignes blanches entre les titres/pieds-de-page et la table

Pour empêcher l’insertion d’une ligne entre le(s) titre(s) et la table, le(s) pied(s)-de-page et la table, il faut faire appel à l’option SKIP_SPACE=.

Avant d’aller plus loin, il faut noter que

  • la ligne d’espace entre le titre est la table est lié au TITRE et
  • la ligne entre la table et le pied-de-page est lié à la TABLE et non au pied-de-page.

Cette option de l’instruction ODS TAGSETS.EXCELXP est composée de 5 nombres.

  • Le premier nombre fait référence à la TABLE
  • Le 3ème nombre est lié au TITRE
  • Le 4ème nombre fait référence au PIED-DE-PAGE.

Par défaut SKIP_SPACE=’1,0,1,1,1′.

Pour ôter les lignes séparant la table des titres et pieds-de-page, on aura : SKIP_SPACE=’0,0,0,1,1′. On enlevera la ligne après la table avec le premier zéro et la ligne après le titre avec le troisième zéro.

01_xls_title_extra

A venir

Je vous propose de découvrir dans les deux articles à venir des compléments sur les titres et pieds-de-page avec ODS TAGSETS.EXCELXP :

  • Créer un style pour personnaliser les couleurs, polices des titres/pieds-de-page avec un PROC TEMPLATE.
  • Utiliser un titre plus grand que la largeur donnée par les colonnes du tableau

Lectures complémentaires

h1

Protégé : Newsletter Juillet : Solution

juillet 7, 2009

Cet article est protégé par mot de passe. Pour le lire, veuillez saisir votre mot de passe ci-dessous :


h1

Protégé : Newsletter Juillet : Exercice

juillet 6, 2009

Cet article est protégé par mot de passe. Pour le lire, veuillez saisir votre mot de passe ci-dessous :


h1

Quel symbole pour mon graphique ?

juillet 5, 2009

Sous SAS, l’instruction globale SYMBOLE sert lors de la construction de graphiques. Une de ces options (value= ou v=) permet de préciser le symbole représentant un point sur un graphique. Voici la liste des différentes valeurs possibles.

1. Les croix

plus : un signe plus

star : étoile à six branches

: (deux points, colon) : étoile à 8 branches

= (signe égale, equal) : une étoile vide

2. Les lettres

x, y, z

3. Les carrés

square (carré, square) : carré vide

hash (dièse, hash) : un carré avec les extrémités des lignes qui se prolonge

_ (tiret bas, underscore) : carré vide déformé

4. Les triangles

triangle :  un triangle vide

5. Les points et les ronds

paw : 4 points formant un carré

point : un point

dot : un cercle rempli

circle : un cercle vide

+ (plus, plus) : cible ou rond avec un signe plus dedans

- (tiret du milieu, hyphen) : un point dans un cercle

, (virgule, comma) : point encerclé complété par une flèche

6. Les symboles de carte

diamond : losange vide

$ (symbole du dollar Alt+0236, dollar sign) : la carte de carreau

(guillemets doubles, double quotes) : pic

£ (symbole de la livre sterling Alt+0163, pound sign) : cœur

% (pourcentage, percent) : trèfle version 1

& (et, ampersand) : trèfle version 2

7. Le symbole des hommes et femmes

* (étoile, asterisk) : symbole de la femme

> (signe supérieur, greater than) : symbole de l’homme

@ (arrobas, at) : symbole de l’homme avec deux traits sur la tête

8. Les autres symboles

(guillemet simple identique à l’apostrophe sur le clavier français ou single quote) : cela ressemble à une fleur de lys

. (point, period) : un semblant de 4

< (symbole inférieur, less than) :  un semblant de lettre h

/ (barre incliné avant, slash) : trident

? (point d’interrogation, question mark) : un semblant de lettre P

( (parenthèse ouverte, left parenthesis) : croissant de lune

) (parenthèse fermée, right parenthesis) : un cercle avec trois traits sur l’extérieur, symbole du point d’observation sur une carte cartographique

Lectures complémentaires

h1

Deux manières de créer un data set vide

juillet 2, 2009

Dans un précédent article Copier la structure d’un data set et se séparer des données, nous avons vu comment récupérer la structure d’une table (data set) de référence, c’est-à-dire copier les caractéristiques des variables sans les données. Ici, vous verrez comment créer un data set, appelé EMPTY, sans données et sans se baser sur un data set de référence.

L’intérêt est de souvent de pouvoir ensuite empiler des data sets ayant des longueurs de variables. En effet la longueur d’une variable rencontrée dans le premier data set sera la longueur de référence. Il ne faut pas qu’elle soit plus petite que celle du data set suivant. Autrement le texte des observations d’après est coupé (truncated).

1. Avec une étape data

Au choix, vous avez l’instruction ATTRIB ou les différentes instructions LABEL, LENGTH, FORMAT, INFORMAT pour créer les variables du data set.

data empty;
attrib var_text   label=‘Var. caractère, longueur 20′ length=$20
var_num_dt label=‘Var. numérique, longueur 8′ format=date9.;
stop;
run;

Dans la log, SAS précisera qu’aucune valeur n’a été donné aux variables VAR_TEXT et VAR_NUM_DT.

NOTE: Variable var_text is uninitialized.
NOTE: Variable var_num_dt is uninitialized.

2. Créer un data set vide avec la procédure SQL

La procédure SQL

proc sql;
create table empty
(
var_text char(20) label=‘Var. caractère, longueur 20′ ,
var_num_dt num label=‘Var. numérique, longueur 8′ format=date9.
);
quit;

3. Voir le résultat

J’ai choisi d’ajouter l’option VARNUM à la procédure PROC CONTENTS pour afficher les données dans l’ordre

proc contents data=empty varnum;
run;

La variable VAR_TEXT apparaît en premier. Il s’agit d’une variable alphanumérique de longueur 20 sans format et ayant pour libellé : Var. caractère, longueur 20.

La seconde variable VAR_NUM_DT est numérique, de longueur 8. Le format DATE9 est appliqué dessus de manière permanente. Le libellé de cette variable est : Var. numérique, longueur 8.

The CONTENTS Procedure

Variables in Creation Order

# Variable   Type   Len Format Label

1 var_text   Char   20         Var. caractère, longueur 20
2 var_num_dt Num     8  DATE9. Var. numérique, longueur 8

Lectures complémentaires