Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > ODS et reporting
ODS et reporting Forum d'entraide sur les fonctionnalités de reporting de SAS : gérer les sorties et graphiques de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/05/2011, 17h59   #1
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Par défaut [ODS TAGSETS] Sheet_name en dynamique

Cette macro me permet de générer un fichier par personne et ça marche très bien. par contre, pour la charmante Olivia par exemple, je souhaiterais avoir 3 onglets DMA, CONT, MORA mais j'obtiens CONT1, CONT2, CONT3.

Je m'arrache les cheveux depuis ce matin sans succès.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
%LET dir=C:\Users\BEARE\Desktop\TABLE;
 
DATA TEST;
INPUT RISQUE$ NOM $ SOLDE_DEB SOLDE_CRE;
CARDS;
DMA   OLIVIA 78 96
CONT  OLIVIA 45 11
MORA  OLIVIA 42 196
DMA   PIERRE 46 92
MORA  PIERRE 12 16
;
RUN;
 
PROC SORT DATA=TEST OUT=OUT NODUPKEY;
BY NOM;
RUN;
 
 
 
DATA _NULL_;
SET OUT;
CALL SYMPUT (COMPRESS("NOM"!!LEFT(_N_)),COMPRESS(NOM));
CALL SYMPUT ("NB",_N_);
RUN;
 
 
%MACRO M;
%DO i=1 %TO &NB.;
DATA &&NOM&i;
SET TEST;
WHERE NOM="&&NOM&i";
RUN; 
 
PROC SORT DATA=&&NOM&i. out=&&NOM&i. ;
BY RISQUE;
RUN;
 
DATA _NULL_;
SET &&NOM&i.;
CALL SYMPUT ("RISQUE"!!LEFT(_N_),RISQUE);
RUN;
 
ODS TAGSETS.EXCELXP FILE = "&dir.\&&NOM&i...xls" 
                             OPTIONS ( SHEET_NAME= "&&RISQUE&i.") ;       
 
PROC PRINT DATA=&&NOM&i. noobs;
BY RISQUE;
RUN;
      %END;
 
      ODS TAGSETS.EXCELXP CLOSE;
      %MEND;
%M;
thank you for your help!
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2011, 22h50   #2
Expert Confirmé
 
Avatar de olivier.decourt
 
Homme Olivier Decourt
Formateur en informatique
Inscription : avril 2008
Messages : 1 467
Détails du profil
Informations personnelles :
Nom : Homme Olivier Decourt
Âge : 34
Localisation : France

Informations professionnelles :
Activité : Formateur en informatique
Secteur : Conseil

Informations forums :
Inscription : avril 2008
Messages : 1 467
Points : 2 823
Points : 2 823
Bonsoir Brice.
Je crois que tu as besoin d'un SHEET_INTERVAL=BYGROUP pour bien changer d'onglet, et de SHEET_LABEL=" " (avec un espace entre les guillemets sinon ça ne fonctionne pas !) pour virer RISQUE= dans le nom de l'onglet et ne conserver que les valeurs de RISQUE en nom d'onglets.
Code :
1
2
3
4
5
6
7
8
9
10
ODS TAGSETS.EXCELXP FILE="c:\temp\brice.xls" 
                 OPTIONS(SHEET_INTERVAL="BYGROUP" 
                         SHEET_LABEL=" ") ;
PROC SORT DATA=sashelp.class OUT=work.class ;
  BY sex ;
RUN ;
PROC PRINT DATA=work.class NOOBS ;
  BY sex ;
RUN ;
ODS TAGSETS.EXCELXP CLOSE ;
Olivier
olivier.decourt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 09h55   #3
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Bonjour Olivier,
J'ai bien un onglet par risque par contre pour virer le = même en mettant un espace entre les doubles quotes (SHEET_LABEL=" "), ça ne marche pas.
Mais c'est déjà bien, je vais finir par trouver et MERCI!
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 10h41   #4
Membre confirmé
 
Inscription : janvier 2010
Messages : 185
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 185
Points : 250
Points : 250
Bonjour Brice,

J'utilise le tagset (Compatible with SAS 9.1.3 and above, v1.116, 08/25/10)
et ça marche.
Télécharge ce tagset et ton problème de label sera résolu.
sasadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 10h59   #5
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Salut Sasadm,
Je m'en doutais un peu que c'est un problème de version. Mon SAS est installé sur lun serveur, Je suppose qu'il faudrait que je contacte le service technique alors?
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 14h16   #6
Membre confirmé
 
Inscription : janvier 2010
Messages : 185
Détails du profil
Informations forums :
Inscription : janvier 2010
Messages : 185
Points : 250
Points : 250
Les tagsets SAS sont enregistrés dans le catalogue tmplmst de la SASHELP et lorsqu'un tagset est utilisé, SAS va le chercher dans ce catalogue.
Si tu n'as pas le droit d'écrire dans la sashelp, tu peux enregistrer ton tagset dans un répertoire qui t'est ouvert en écriture (voire dans la work, mais il faudra recompiler le tagset à chaque nouvelle session).

Il te faudra manipuler l'ods path pour enregistrer le tagset et pour ensuite l'utiliser.

enregistrement :
Code :
1
2
3
4
 
ods path  talibrairie.toncatalogue(UPDATE) sashelp.tmplmst(READ);
 
/* code du template */


utilisation :
Code :
1
2
3
4
 
ods path  talibrairie.toncatalogue(READ) sashelp.tmplmst(READ);
 
/* code des tes ods */
sasadm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/05/2011, 15h34   #7
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
ça n'a rien changé mais c'est pas grave, merci!
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h54.


 
 
 
 
Partenaires

Hébergement Web