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 03/05/2011, 11h08   #1
Invité régulier
 
Inscription : avril 2009
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 23
Points : 9
Points : 9
Par défaut ODS TAGSET - PROC PRINT - SANS OUTPUT

Bonjour,
Ci-dessous une macro qui permet d'exporter une table SAS avec formats & labels dans Excel.
Ce programme ne doit pas être optimum mais il a le mérite de fonctionner... mon problème est que je ne veux pas que le résultat du PROC PRINT s'affiche dans l'OUTPUT de SAS. Connaissez-vous une solution ??
Je vous remercie par avance.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
%MACRO EXPORT(TABLE=,CONDVAR=,CONDVAL=,FICHIER=);
 
ODS TAGSETS.EXCELXP FILE="&FICHIER" STYLE=MINIMAL;
 
%LET I=0;
%DO %UNTIL (%SCAN(&CONDVAL,&I+1,+)=);
 
%LET I=%EVAL(&I+1);
%LET MODALITE&I=%UPCASE(%SCAN(&CONDVAL,&I,+));
 
ODS TAGSETS.EXCELXP OPTIONS(SHEET_NAME="&&MODALITE&I");
PROC PRINT DATA=&TABLE NOOBS LABEL;
WHERE &CONDVAR=&&MODALITE&I;
RUN ;
 
%END;
 
ODS TAGSETS.EXCELXP CLOSE ;
 
%MEND;
yahnou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 11h21   #2
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
Essaies de mettre au début de ta macro
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 11h38   #3
Invité régulier
 
Inscription : avril 2009
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 23
Points : 9
Points : 9
Alors, effectivement, ca n'affiche pas le proc print dans l'output mais ca ne l'exporte plus dans Excel... Peut-être que je mets l'options au mauvais endroit du programme ? j'ai testé :

Code :
1
2
3
4
5
6
ODS EXCLUDE ALL;
ODS TAGSETS.EXCELXP FILE="&FICHIER" STYLE=MINIMAL;
 
%LET I=0;
%DO %UNTIL (%SCAN(&CONDVAL,&I+1,+)=);
.....
Code :
1
2
3
4
5
6
7
8
9
ODS TAGSETS.EXCELXP FILE="&FICHIER" STYLE=MINIMAL;
ODS EXCLUDE ALL;
 
%LET I=0;
%DO %UNTIL (%SCAN(&CONDVAL,&I+1,+)=);
 
%LET I=%EVAL(&I+1);
%LET MODALITE&I=%UPCASE(%SCAN(&CONDVAL,&I,+));
....
Code :
1
2
3
4
5
6
7
8
9
10
11
12
ODS TAGSETS.EXCELXP FILE="&FICHIER" STYLE=MINIMAL;
 
%LET I=0;
%DO %UNTIL (%SCAN(&CONDVAL,&I+1,+)=);
 
%LET I=%EVAL(&I+1);
%LET MODALITE&I=%UPCASE(%SCAN(&CONDVAL,&I,+));
 
ODS TAGSETS.EXCELXP OPTIONS(SHEET_NAME="&&MODALITE&I");
ODS EXCLUDE ALL;
PROC PRINT DATA=&TABLE NOOBS LABEL;
....
yahnou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 11h43   #4
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
Bonjour,

Je ne suis pas sur de bien comprendre.. Tu veux quoi exactement dans ta table excel?
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 11h47   #5
Invité régulier
 
Inscription : avril 2009
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 23
Points : 9
Points : 9
Citation:
Envoyé par Manoutz Voir le message
Bonjour,

Je ne suis pas sur de bien comprendre.. Tu veux quoi exactement dans ta table excel?
Dans mon document Excel je veux le résultat du proc print en appliquant la condition where (un onglet par condition)
J'arrive très bien à exporter les données mais je ne veux pas que le proc print s'affiche dans l'output car les tables ont plusieurs milliers d'observations et SAS me demande régulièrement de vider l'output.
yahnou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 11h48   #6
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
C'est bien là qu'il fallait mettre mais visiblement ça ne marche pas alors!!

La proc print a pour but d'afficher dans l'output, tu ne peux donc pas bloquer l'affichage, c'est pourquoi tu n'as rien dans ton fichier de sortie.
Tu peux utiliser une proc report ou tabulate couplée avec ODS EXCLUDE ALL
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 12h00   #7
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
Une solution avec la proc print consiste à ne sélectionner pour la lecture et l'export que les informations dont tu as besoin(regarde le where ci dessous). Au début de chaque étape, tu peux effacer la log et l'output.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
%MACRO EXPORT(TABLE=,CONDVAR=,CONDVAL=,FICHIER=);
 
ODS TAGSETS.EXCELXP FILE="&FICHIER" STYLE=MINIMAL;
 
%LET I=0;
%DO %UNTIL (%SCAN(&CONDVAL,&I+1,+)=);
 
%LET I=%EVAL(&I+1);
%LET MODALITE&I=%UPCASE(%SCAN(&CONDVAL,&I,+));
 
dm 'log;clear;output;clear;';
 
ODS TAGSETS.EXCELXP OPTIONS(SHEET_NAME="&&MODALITE&I");
PROC PRINT DATA=&TABLE(WHERE= (&CONDVAR=&&MODALITE&I)) NOOBS LABEL;
RUN ;
 
%END;
 
ODS TAGSETS.EXCELXP CLOSE ;
 
%MEND;
Manoutz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 12h15   #8
Invité régulier
 
Inscription : avril 2009
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 23
Points : 9
Points : 9
Merci bien Manoutz !
Ca ne corrige pas totalement mon problème mais c'est tout de même une bonne alternative. On peut considérer le sujet résolu.... Mais si quelqu'un a une idée, je reste bien évidemment preneur.
yahnou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/05/2011, 12h35   #9
Invité régulier
 
Inscription : avril 2009
Messages : 23
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 23
Points : 9
Points : 9
Avec ODS LISTING CLOSE en début de programme et ODS LISTING en fin de programme, ça fonctionne parfaitement... Je pensais l'avoir testé, à priori non !
yahnou est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h33.


 
 
 
 
Partenaires

Hébergement Web