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 :

Automatisation d'un programme


Sujet :

Macro

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Automatisation d'un programme
    Bonjour,

    Voici le résumé de ma demande :
    *
    CONTEXTE*:
    *
    A aujourd’hui j’ai une table mensuelle qui se crée sous le format TABLE_AAMM avec à l’intérieur 2 variables*: id_client et note (score mensuel).
    Afin de suivre l’évolution des notes, j’avais créé un programme pour avoir une table (avec note en ligne et date en colonne) que j’exporte ensuite sous Excel afin de créer un graphique automatique.
    *
    Voici le programme*:
    *
    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
    PROC SQL;
    CREATE TABLE TABLE1 AS
    *
    (*** SELECT note, COUNT(ID_CLIENT) as NOTE_1612
    **** FROM TABLE_1612
    **** GROUP BY note
    );
    QUIT;
    RUN;
    *
    *
    PROC SQL;
    CREATE TABLE TABLE2 AS
    *
    (*** SELECT note, COUNT(ID_CLIENT) as NOTE_1701
    **** FROM TABLE_1701
    **** GROUP BY note
    );
    QUIT;
    RUN;
    *
    /*... pour chaque mois...*/
    *
    DATA* TABLE FINALE;
    MERGE
    **** TABLE1
    **** TABLE2
    …;
    BY note;
    RUN;
    *
    BUT*:
    *
    Le but est d’optimiser le programme afin de le rendre le plus automatique possible.
    Celui-ci n’est pas du tout optimisé car tous les mois je dois ajouter du code…
    *
    Pourriez vous m’aider sur la construction de ce bout de programme*?

    En vous remerciant.

    Cordialement,

  2. #2
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Hello,
    Je te donne un exemple en Call Execute, mais c'est tout à fait possible de le faire avec un macro programme :

    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
     
     
    data test_1;
    set sashelp.class (keep=Age sex);
    run;
     
    data test_2;
    set sashelp.class (keep=Age sex);
    run;
     
    data test_3;
    set sashelp.class (keep=Age sex);
    run;
     
    proc sql;
    create table list_tabs as select memname, scan(memname, -1,'_') as increment from sashelp.vtable where upcase(libname)='WORK' 
    and upcase(memname) like 'TEST%'
    ;
    quit;
     
    data _null_;
    set list_tabs;
     
    call execute  (" proc sql; create table tab_" !!left(_n_) !! " as select sex,avg(age)as m_age_"!! increment !!"  from  "!! memname !! " group by sex;quit;"
    );
    run; 
     
    proc sql;
    select memname into : tabs separated by " "  from sashelp.vtable where upcase(libname)='WORK' 
    and upcase(memname) like 'TAB_%'
    ;
    quit;
     
     
     
     
    data final;
    merge &tabs ;
    by sex;
    run;
     
    proc delete  data=&tabs;
    ;
    run;
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Février 2011
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci pour ton retour.
    Mais je pense qu'une macro serait plus approprié car tous les mois une nouvelle table arrive et donc je veux pas forcément ajouter du code...

  4. #4
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Tu n'as peut être pas compris mon programme, mais il est 100% automatique... suffit de le tester et l'adapter aux noms de tes tables.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/08/2013, 20h05
  2. Automatisation d'un programme
    Par oliv27400 dans le forum MATLAB
    Réponses: 5
    Dernier message: 23/04/2011, 10h53
  3. Réponses: 28
    Dernier message: 17/08/2006, 15h58
  4. automatiser un programme à l'aide de perl
    Par moitoujours dans le forum Langage
    Réponses: 8
    Dernier message: 15/03/2006, 20h10
  5. Programme d'automatisation clavier/souris
    Par Manu76 dans le forum Périphériques
    Réponses: 2
    Dernier message: 12/03/2006, 17h47

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