
FAQ SASConsultez toutes les FAQ
Nombre d'auteurs : 14, nombre de questions : 232, dernière mise à jour : 20 décembre 2012
Sommaire→ODS et Reporting→SAS EXCEL- Comment ouvrir une feuille Excel depuis SAS ?
- Comment insérer des valeurs dans une feuille Excel ?
- Comment lire des données depuis un fichier Excel ?
- Comment écrire des valeurs saisies depuis une fenêtre SAS Windows et les mettre à jour dynamiquement dans Excel ?
- Comment exporter chaque table d'une bibliothèque dans un classeur Excel ?
- Comment forcer l'importation des dates de fichiers Excel en format « datetime.» ? (SAS 9)
%macro ouvre_excel;
options noxwait noxsync;
%LET tit1=%str(C:\)
%LET tit2=%str(classeur1.xls);
%LET titre=%str("&tit1&tit2);
X &titre;
data _null_;
rc = sleep(2);
run;
%mend;
%ouvre_excel;Avant toute chose, il faut ouvrir le fichier Excel (cf. : comment ouvrir une feuille Excel).
DATA bidon1;
input X1 X2 Y1 Y2 X5 $;
cards;
78 5 5 1161 ABÉLIEN
35 6 3 1336 ALMÉRIC
82 1 5 1499 ANIEL
;
run;
%LET tit1=%str(excel|D:\blablbla\[Traitement_ACN.xls]P0IC1625!L6C1);
%LET tit2=%str(:L20C10);
%LET titre=%str(%sysfunc(compress('&tit1&tit2')));
options mprint symbolgen;
filename write1 DDE "&titre";
DATA _null_;
file WRITE;
SET work.bidon1;
put X1 '09'x X2 '09'x Y1 '09'x Y2 '09'x X5 '09'x;
run;
/*"'09'x" correspond au caractère tabulation*/Ce programme copie les données de la table bidon1 dans la feuille1 du fichier classeur1.xls sur les cellules allant de L1C1 à L20C10.
On est censé lire les données depuis l1c1 jusqu'à l15c2.
En réalité, les données vont de l5c1 jusqu'à l9c2.
'09'x est la valeur hexadécimale de la tabulation.
NOTAB informe SAS de ne pas convertir les tabulations en valeurs manquantes.
DSD informe SAS que deux délimiteurs consécutifs doivent être considérés comme une valeur manquante.
MISSOVER informe SAS de ne pas aller à la ligne s'il trouve une valeur manquante.
Filename fic dde 'excel|c:\exemples\essaidde.xls!l1c1:l15c2';
DATA FromXL
INFILE fic dlm='09'x notab dsd missover
input miles kilometres
run;
Filename xlsfile dde 'excel|G :\test.xls!l1c1:l1c3';
DATA MyDS;
/* déclaration de la fenêtre SAS Windows)*/
IF _n_ = 1 then do;
Window MaFenetre color = black
#3 'Ceci est la valeur de la ligne 1 colonne 1' c = cyan +2 var1 $10. c = orange
#5 'Ceci est la valeur de la ligne 1 colonne 2' c = cyan +2 var2 $10. c = orange
#7 'Ceci est la valeur de la ligne 1 colonne 3' c = cyan +2 var3 $10. c = orange;
end;
/* écriture dans Excel des valeurs saisies */
flsh = '!DDE_FLUSH';
file xlsfile;
do while (upcase(_cmd_) ne 'STOP');
display MaFenetre;
put var1 var2 var3 flsh;
output;
var1=''; var2=''; var3='';
end;
stop;
run;
Le macroprogramme ci-dessous exporte chaque membre de type DATA d'une bibliothèque.
Liste des paramètres :
· MYLIB : nom de la bibliothèque où sont stockées les tables SAS ;
· MYDIR : nom du répertoire où seront stockés les fichiers MS Excel.
%MACRO M_EXPORT (MyLib=, MyDir=);
data _null_ ;
set sashelp.vtable (where=(libname=compress(upcase("&MyLib")))) ;
call execute
("PROC EXPORT DATA=" !! compress(libname !! '.' !!memname)
!! " OUTFILE='&MyDir" !! compress(memname !! ".XLS'")
!! " DBMS=EXCEL2000 REPLACE ; RUN ;") ;
run ;
%MEND M_EXPORT; Pour exporter des données vers Excel avec la procédure EXPORT, il est nécessaire d'avoir une licence pour le module SAS/Access to PC File Formats.
Utiliser la fonction USEDATE= NO, comme dans l'exemple ci-dessous :
proc import out=matable datafile='c:\fichierExcel.xls';
usedate=no;
run ;
Remarques
- Par défaut, USEDATE=YES : les dates seront importées en format « date9. ».
- USEDATE=NO : les dates seront importées, comme en version 8.2, à savoir en format « datetime. ».



