FAQ SASConsultez toutes les FAQ
Nombre d'auteurs : 14, nombre de questions : 232, dernière mise à jour : 20 décembre 2012
- 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. ».