Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Macro
Macro Forum d'entraide sur le langage Macro 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 06/12/2007, 15h09   #1
Membre habitué
 
Inscription : juillet 2006
Messages : 284
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 284
Points : 107
Points : 107
Par défaut Créer commande SAS en fonction de la date

Bonjour, j’ai un programme à lancer tout les débuts de mois c’est pour cela que j’ai besoin que le paramètre de mon FILENAME change en fonction du mois pour en fait me mettre à la bonne position dans un fichier Excel.

Ici je récupère la position de la colonne (c’est 26 + numéros de mois).

Code :
1
2
3
4
5
DATA _null_;/*POSITION DANS LA COLONNE*/
 a=month(date());
 b=26+a;
 put b;
 run;
Ensuite comment faire pour que SAS m’exécute la commande :

Code :
filename WRITE DDE 'excel|D:\Documents\S087164\Mes Documents\ENVIR AUTO SUIVI DE PROD\tps_traitement\[Traitement_ACN.xls]P0IC1625!L6CXX:L21CXX';
Avec XX = la position de la colonne.

Comme ça je pourrais exécuter ce code bien comme il faut.

Code :
1
2
3
4
5
6
filename WRITE DDE 'excel|D:\Documents\S087164\Mes Documents\ENVIR AUTO SUIVI DE PROD\tps_traitement\[Traitement_ACN.xls]P0IC1625!L6CXX:L21CXX';
data _null_;
 file WRITE;
 set work.P0IC1645BIS;
 put NOBS;
run;
Merci. Ash_rmy.
ash_rmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 15h29   #2
Membre éprouvé
 
Inscription : octobre 2007
Messages : 442
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 442
Points : 485
Points : 485
Hello !

Avec des macro variables :

Code :
1
2
3
4
5
6
7
8
Data _null_;/*POSITION DANS LA COLONNE*/
    a=month(date());
    b=26+a;
    put b;
    call symput("XX", b);
run;

filename WRITE DDE "excel|D:\blablbla\[Traitement_ACN.xls]P0IC1625!L6C&XX.:L21C&XX";
Attention, le chemin de ton filename doit être entre double cotes "chemin" et non simples 'chemin' pour que SAS interprète les macro variables
Duc Lebowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2007, 15h38   #3
Membre habitué
 
Inscription : juillet 2006
Messages : 284
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 284
Points : 107
Points : 107
Merci Duc Lebowski!!! La macro variable est bien crée.

Mais SAS ne m'interpréte pas la commande suivante :
Code :
filename WRITE DDE "excel|H:\DPEI-FINANCES-REPORTING\Infocentre\Ashley Rmy\ENVIR AUTO SUIVI DE PROD\tps_traitement\[Traitement_ACN.xls]P0IC1625!L6C&XX:L21C&XX";
Merci pour l'aide.

ash_rmy.
ash_rmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/12/2007, 17h40   #4
Membre éprouvé
 
Inscription : octobre 2007
Messages : 442
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 442
Points : 485
Points : 485
Si c'est forcément interprété, j'ai juste oublié qu'il allait mettre des espaces.

Il faut faire ça plutôt :

Code :
call symput("XX", compress(b));
Duc Lebowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/12/2007, 12h53   #5
Membre habitué
 
Inscription : juillet 2006
Messages : 284
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 284
Points : 107
Points : 107
Bonjour,

J'ai essayé ta solution avec différent positionnement des " mais ça ne marche toujours pas.

Je pense que c'est spéciale dans ce cas car c'est l'interprétation d'une macro-variable dans une option DDE.

Merci pour l'aide.

ash_rmy.
ash_rmy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 12h26   #6
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 807
Points : 4 807
Bonjour,
Effectivement, ça ne marche pas car SAS ne reconnait pas ta macro variable dans ton filename.
Pour résoudre le problème tu dois créer une macro-variable contenant le chemin avec la marco-variable flexible.
Pour être plus précis et compréhensible voici un code qui marche parfaitement.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
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 var1=30;
%LET var2=40;
%LET tt1=%str(excel|D:\[Classeur1.xls]Feuil1!L6C);
%LET tt2=%str(:L25C);
%LET tit2=%str("&tt1&var1&tt2&var2");
%PUT &tit2;
filename WRITE DDE &tit2;
DATA _null_;
 file WRITE;
 SET work.bidon1;
 put X1 '09'x X2 '09'x Y1 '09'x Y2 '09'x X5 '09'x;
run;
L'astuce vient de la fonction %str!!
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2007, 12h29   #7
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 807
Points : 4 807
Ou dans ton cas de figure (fait sans tester) :
Code :
1
2
3
4
%LET tit1=%str(excel|D:\blablbla\[Traitement_ACN.xls]P0IC1625!L6C)
%LET tit2=%str(.:L21C);
%LET titre=%str("&tit1&XX&tit2&XX);
filename WRITE DDE &titre;
Dit moi si ça marche!!
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2007, 11h17   #8
Membre habitué
 
Inscription : juillet 2006
Messages : 284
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 284
Points : 107
Points : 107
Merci ça marche

Code :
1
2
3
4
5
6
7
8
9
10
11
%LET tit1=%str(excel|D:\blablbla\[Traitement_ACN.xls]P0IC1625!L6C);
%put &tit1;
 
%LET tit2=%str(:L21C);
%put &tit2;
 
%LET titre=%str(%sysfunc(compress('&tit1&XX&tit2&XX')));
%put &titre;
 
options mprint symbolgen;
filename write1 DDE "&titre";
ash_rmy.
ash_rmy 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 16h20.


 
 
 
 
Partenaires

Hébergement Web