IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macro Discussion :

Macro avec PROC EXPORT


Sujet :

Macro

  1. #1
    Membre à l'essai
    Femme Profil pro
    statisticienne
    Inscrit en
    Décembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : statisticienne

    Informations forums :
    Inscription : Décembre 2008
    Messages : 29
    Points : 19
    Points
    19
    Par défaut Macro avec PROC EXPORT
    Bonjour,

    Je souhaite exporter 6 tables dont 2 tables dans un même fichier excel (2 classeurs différents).

    Voici mon code.Je ne sais pas comment le modifier afin que tab5 et tab6 soient dans le même fichier Excel.


    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
    %let repertoire=//organisation/fichiers_tables;
     
    %Macro export(chemin=,lib=,tab=);
    Filename recla "&repertoire./&tab..xls";
    PROC EXPORT DATA =&lib..&tab.
    OUTFILE = &chemin.
    DBMS = EXCEL REPLACE ;
    SHEET="&tab.";
    RUN;
    %Mend;
     
    %macro exporter_recl;
     
    %if %sysfunc(fileexist(&repertoire)) eq 0 %then %do;
    	%put le chemin &repertoire n existe pas ou n est pas accessible par l utilisateur &SYSUSERID;
    %end;
    %else %do;
    	%put le chemin &repertoire OK;
    	%
    	%export(chemin=recla,lib=work,tab=tab1);
    	%export(chemin=recla,lib=work,tab=tab2);
    	%export(chemin=recla,lib=work,tab=tab3);
    	%export(chemin=recla,lib=work,tab=tab4);
    	%export(chemin=recla,lib=work,tab=tab5);
          %export(chemin=recla,lib=work,tab=tab6);
     
    %end;
     
    %mend;
    %exporter_recl;

    Aurez-vous des suggestions.

  2. #2
    Membre régulier
    Homme Profil pro
    SAS automation
    Inscrit en
    Juin 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SAS automation
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 87
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    Voici une option en déclarant le nom de ton chemin et du fichier directement lors de ton appel de la macro
    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
     
     
    %Macro export(chemin=,lib=,tab=);
    Filename recla "&repertoire./&tab..xls";
    PROC EXPORT DATA =&lib..&tab.
    OUTFILE = &chemin.
    DBMS = EXCEL ;
    SHEET="&tab.";
    RUN;
    %Mend;
     
    %macro exporter_recl;
     
    %IF %sysfunc(fileexist(&repertoire)) eq 0 %then %do;
    	%put le chemin &repertoire n existe pas ou n est pas accessible par l utilisateur &SYSUSERID;
    %end;
    %else %do;
    	%put le chemin &repertoire OK;
    	%
    	%export(chemin='//organisation/fichiers_tables/tab1.xls',lib=work,tab=tab1);
    	%export(chemin='//organisation/fichiers_tables/tab2.xls',lib=work,tab=tab2);
    	%export(chemin='//organisation/fichiers_tables/tab3.xls',lib=work,tab=tab3);
    	%export(chemin='//organisation/fichiers_tables/tab4.xls',lib=work,tab=tab4);
    	%export(chemin='//organisation/fichiers_tables/tab5.xls',lib=work,tab=tab5);
          %export(chemin='//organisation/fichiers_tables/tab5.xls',lib=work,tab=tab6);
     
    %end;
     
    %mend;
    %exporter_recl;

  3. #3
    Membre à l'essai
    Femme Profil pro
    statisticienne
    Inscrit en
    Décembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : statisticienne

    Informations forums :
    Inscription : Décembre 2008
    Messages : 29
    Points : 19
    Points
    19
    Par défaut
    merci!

    Je vais tester le code

  4. #4
    Membre à l'essai
    Femme Profil pro
    statisticienne
    Inscrit en
    Décembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : statisticienne

    Informations forums :
    Inscription : Décembre 2008
    Messages : 29
    Points : 19
    Points
    19
    Par défaut
    Bonjour,
    Déclarer le nom du chemin et du fichier directement lors de l' appel de la macro ne résoud pas le pb

  5. #5
    Membre régulier
    Homme Profil pro
    SAS automation
    Inscrit en
    Juin 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SAS automation
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 87
    Points : 84
    Points
    84
    Par défaut
    Bonjour,

    Voici une autre version de la macro , en espérant que cela fonctionnerra de ton côté.

    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
     
    %Macro export(chemin=,lib=,tab=);
    PROC EXPORT DATA =&lib..&tab.
    OUTFILE = &chemin.
    DBMS = excelcs ;
    SHEET="&tab.";
    RUN;
    %Mend;
     
     
    %macro exporter_recl;
     
    %IF %sysfunc(fileexist(&repertoire)) eq 0 %then %do;
    	%put le chemin &repertoire n existe pas ou n est pas accessible par l utilisateur &SYSUSERID;
    %end;
    %else %do;
    	%put le chemin &repertoire OK;
    	%
    	%export(chemin='//organisation/fichiers_tables/tab1.xls',lib=work,tab=tab1);
    	%export(chemin='//organisation/fichiers_tables/tab2.xls',lib=work,tab=tab2);
    	%export(chemin='//organisation/fichiers_tables/tab3.xls',lib=work,tab=tab3);
    	%export(chemin='//organisation/fichiers_tables/tab4.xls',lib=work,tab=tab4);
    	%export(chemin='//organisation/fichiers_tables/tab5.xls',lib=work,tab=tab5);
          %export(chemin='//organisation/fichiers_tables/tab5.xls',lib=work,tab=tab6);
     
    %end;
     
    %mend;
    %exporter_recl;
    je viens de la retester et j'ai bien 5 fichier et dans le dernier 2 onglets.

  6. #6
    Membre expérimenté
    Avatar de MEGAMIND2
    Homme Profil pro
    Paris
    Inscrit en
    Janvier 2011
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Paris

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 029
    Points : 1 489
    Points
    1 489
    Par défaut
    Bonjour,
    Le plus simple serait d'empiler les deux tables avant d'exporter je pense!

  7. #7
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    Citation Envoyé par Elcocco Voir le message
    Bonjour,

    Voici une autre version de la macro , en espérant que cela fonctionnerra de ton côté.

    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
     
    %Macro export(chemin=,lib=,tab=);
    PROC EXPORT DATA =&lib..&tab.
    OUTFILE = &chemin.
    DBMS = excelcs ;
    SHEET="&tab.";
    RUN;
    %Mend;
     
     
    %macro exporter_recl;
     
    %IF %sysfunc(fileexist(&repertoire)) eq 0 %then %do;
    	%put le chemin &repertoire n existe pas ou n est pas accessible par l utilisateur &SYSUSERID;
    %end;
    %else %do;
    	%put le chemin &repertoire OK;
    	%
    	%export(chemin='//organisation/fichiers_tables/tab1.xls',lib=work,tab=tab1);
    	%export(chemin='//organisation/fichiers_tables/tab2.xls',lib=work,tab=tab2);
    	%export(chemin='//organisation/fichiers_tables/tab3.xls',lib=work,tab=tab3);
    	%export(chemin='//organisation/fichiers_tables/tab4.xls',lib=work,tab=tab4);
    	%export(chemin='//organisation/fichiers_tables/tab5.xls',lib=work,tab=tab5);
          %export(chemin='//organisation/fichiers_tables/tab5.xls',lib=work,tab=tab6);
     
    %end;
     
    %mend;
    %exporter_recl;
    je viens de la retester et j'ai bien 5 fichier et dans le dernier 2 onglets.
    Tu es sur que ce code marche?
    La macro %exporter_recl, s'exécute en premier et vérifie l'existence de &repertoire, elle est définie ou cette macro variable?
    Le test sur le répertoire ne sert à rien
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

  8. #8
    Membre régulier
    Homme Profil pro
    SAS automation
    Inscrit en
    Juin 2011
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SAS automation
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2011
    Messages : 87
    Points : 84
    Points
    84
    Par défaut
    OOps pardon j'ai oublié de recopier la première ligne du code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %let repertoire=//organisation/fichiers_tables;

  9. #9
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    Merci, je comprends mieux.
    nbl.83 tu peux poster la log sas?
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

Discussions similaires

  1. Export de plusieurs variables avec PROC UNIVARIATE
    Par Mark531 dans le forum SAS STAT
    Réponses: 6
    Dernier message: 14/04/2011, 21h15
  2. Fonctionnalité perdue avec la proc Export de 9.2: les quotes
    Par Laurinette57 dans le forum SAS Base
    Réponses: 8
    Dernier message: 30/03/2011, 15h06
  3. proc export avec espace
    Par Tyler Durden dans le forum SAS Base
    Réponses: 7
    Dernier message: 31/03/2009, 11h31
  4. [Macro] Libellé macro-variable avec proc sql
    Par auredura dans le forum Macro
    Réponses: 2
    Dernier message: 03/09/2008, 12h46
  5. Macro pour proc export
    Par Vascogil dans le forum Macro
    Réponses: 1
    Dernier message: 23/01/2008, 22h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo