Bonjour,
Je veux exporter une table SAS vers un fichier EXCEL avec libellées pour les entêtes. Le nombre des colonnes n'est pas connu d'avance, donc j'ai voulu utiliser une macro pour générer la partie inconnue de l'entete (var_tot-----var_3 dans l'exemple). Mais j'ai pas ressuie, mes macro variables pour l'entête ne veulent jamais être résolues !! donc elles apparaissent comme ça dans l'entête de mon fichier EXCEL (&&var&i.. &&var&i.. &&var&i.. &&var&i.. &&var&i..
).
Pour cela j'ai une table qui contient la liste des colonne (la table var), donc je l'utilise pour générer l'entête (voir le code).
Quelqu'un a une idée comment je dois faire pour que ça marche ???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 /* La table a exporter */ data test ; machine="machine1" ; gropue="groupe1" ; var_tot=114 ; var_0=110 ; var_1=111 ; var_2=112 ; var_3=113 ; output ; machine="machine1" ; gropue="groupe2" ; var_tot=124 ; var_0=0 ; var_1=121 ; var_2=122 ; var_3=123 ; output ; machine="machine2" ; gropue="groupe1" ; var_tot=214 ; var_0=210 ; var_1=211 ; var_2=212 ; var_3=213 ; output ; machine="machine2" ; gropue="groupe2" ; var_tot=224 ; var_0=220 ; var_1=221 ; var_2=222 ; var_3=223 ; output ; run ; /* La table contenant les variable */ data var ; var="var_tot" ; output ; var="var_0" ; output ; var="var_1" ; output ; var="var_2" ; output ; var="var_3" ; output ; run ; data _null_ ; set var ; call symput('var' !! compress(_n_), compress(var)) ; call symput('var' !! compress(_n_), compress(var)) ; call symput('var' !! compress(_n_), compress(var)) ; call symput('var' !! compress(_n_), compress(var)) ; call symput('var' !! compress(_n_), compress(var)) ; call symput('nbvar', _n_) ; run ; /* Macro pour la generation du header */ %macro header ; %do i=1 %to 5 ; '&&var&i..' '09'x %end ; %mend ; /* La Macro qui exporte en EXCEL */ %macro excel; FILENAME EXCEL "C:/test1.xls" ; DATA _NULL_; set test ; FILE EXCEL lrecl=25000 ; if _n_ = 1 then do ; PUT 'Machine' '09'x 'Groupe' '09'x %header ; end; PUT machine '09'x groupe '09'x %do i=1 %to 5 ; &&var&i.. '09'x %end ; ; RUN; %mend ; %excel ;
PS: je peux pas utiliser la proc export parceque j'ai pas de licence de SAS access pour MS EXCEL
D'avance Merci !
Partager