Bonjour,
Voici donc la macro ainsi qu'un exemple de fichier Excel que tu vas enregistrer dans le repertoire
C:\Documents and Settings\MARION\Bureau
s'il existe. J'ai déjà colorié comme un gamin certaines plages mais tu peux changer les couleurs à ta guise.
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| /* Spécifiez le repertoire où se trouve la maquette Execel*/
%LET dir=C:\Documents and Settings\MARION\Bureau;
/* Sépifiez le nom du fichier Excel*/
%LET nom_maquette=Shoes;
options noxwait noxsync;
filename sys dde "Excel|system";
DATA _NULL_ ;
length FID RC STOP 8 ;
FID = FOPEN("SYS","S");
IF FID = 0 then do ;
RC = SYSTEM("start excel");
STOP = datetime() + 10 ;
do while (FID = 0) ;
FID = FOPEN("SYS","S");
IF (Datetime() > STOP) then FID = 1 ;
end ;
end ;
RC = fclose(FID);
run ;
DATA _null_;
file SYS;
put "[ERROR(false)]";
put "[open(""&dir.\&nom_maquette..xls"",,TRUE)]";
run;
%MACRO DDE(table1=,onglet=);
proc contents data=&table1. out=name noprint;
run;
proc sort data=name;
by varnum;
run;
data name;
set name;
separ=compress("'09'"!!" "!! "X");
var=compress(quote(name))!!" "!!separ;
var2=compress(name)!!" "!!separ;
run;
proc sql noprint;
select var into: l separated by " " from name;
select var2 into: l2 separated by " " from name;
quit;
%put l=&l.;
filename test2 dde "Excel|&onglet!l2C1:l999C99" notab lrecl=64000;
filename test2n dde "Excel|&onglet!l1C1:l999C99" ;
data _null_;
file test2n;
PUT &l. ;
RUN;
data _null_;
set &table1.;
file test2;
PUT &l2.;
RUN;
%MEND;
%DDE(table1=Sashelp.Class,onglet=Shoes);
/* Pour fermer le fichier*/
/*
DATA _NULL_ ;
file cmd ;
put "[SAVE()]";
put "[CLOSE()]";
put "[QUIT()]";
run ;
*/ |
N'hésite pas à me demander des explications si jamais tu comprends pas.
Partager