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 :

Renommer plusieurs variables


Sujet :

Macro

  1. #1
    Membre régulier
    Femme Profil pro
    Gestionnaire administrative
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Gestionnaire administrative
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Points : 73
    Points
    73
    Par défaut Renommer plusieurs variables
    Bonjour tout le monde !

    Voilà, j'ai 3 tables avec chacune une dizaine de variables.

    Pour la 1ère table je souhaite ajouter un "1_" devant toutes les variables.
    Pour la 2ème table je souhaite ajouter un "2_" devant toutes les variables.
    Pour la 3ème table je souhaite ajouter un "3_" devant toutes les variables.

    Je ne sais pas du tout comment procéder. Auriez-vous une idée ?

    Merci d'avance !!

    Auriane

  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,
    Il n'est pas possible de commencer le nom des variables par du numérique, en revanche tu peux faire ceci :
    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
     
    DATA test1 test2 test3;
    SET sashelp.class;
    run;
     
    %macro rename ( table,mv_num);
     
    proc sql noprint;
       SELECT name, max (monotonic()) INTO: old_var separated BY ',' ,: nbr 
       FROM dictionary.COLUMNS WHERE upcase(libname)='WORK' AND upcase(memname)="&table" ;
    quit;
     
    DATA &table.      ;
     
    SET &table. ;
     
          %do i=1 %TO &nbr.;
             rename %scan("&old_var",&i,",")=%sysfunc(cats(&mv_num.,%scan("&old_var",&i,",")));
          %end;
    run;
    %mend;
     
    %rename ( TEST1, _01_);
    %rename ( TEST2, _02_);
    %rename ( TEST3, _03_);
    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
    Membre régulier
    Femme Profil pro
    Gestionnaire administrative
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Gestionnaire administrative
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Points : 73
    Points
    73
    Par défaut
    Merci mais j'ai essayé et dans le journal il me met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ERROR: Opérande caractère trouvé dans la fonction %EVAL ou condition %IF là où un opérande numérique
           est requis. La condition était : &nbr.
    ERROR: La valeur %TO de la boucle %DO I est incorrecte.
    ERROR: L'exécution de la macro RENAME va s'arrêter.
    897  %RENAME ( bibli.Liste_OPP_vie, _02_);
    Une idée ? Désolée mais je débute donc je n'y connais pas grand chose...

    J'ai mis :

    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
    DATA bibli.Export_vie bibli.Liste_OPP_vie bibli.ExportPers;
    SET sashelp.class;
    run;
     
    %macro RENAME ( TABLE,mv_num);
     
    proc sql noprint;
       SELECT name, max (monotonic()) INTO: old_var separated BY ',' ,: nbr 
       FROM dictionary.COLUMNS WHERE upcase(libname)='WORK' AND upcase(memname)="&table" ;
    quit;
     
    DATA &TABLE.      ;
     
    SET &TABLE. ;
     
          %do i=1 %TO &nbr.;
             RENAME %scan("&old_var",&i,",")=%sysfunc(cats(&mv_num.,%scan("&old_var",&i,",")));
          %end;
    run;
    %mend;
     
    %RENAME ( bibli.Export_vie, _01_);
    %RENAME ( bibli.Liste_OPP_vie, _02_);
    %RENAME ( bibli.ExportPers, _03_);

  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
    Essaie plutôt ceci :
    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
     
    DATA bibli.Export_vie bibli.Liste_OPP_vie bibli.ExportPers;
    SET sashelp.class;
    run;
     
    %macro RENAME ( TABLE,mv_num);
     
    proc sql noprint;
       SELECT name, max (monotonic()) INTO: old_var separated BY ',' ,: nbr 
       FROM dictionary.COLUMNS WHERE upcase(libname)='BIBLI'AND upcase(memname)="&table" ;
    quit;
     
    DATA &TABLE.      ;
     
    SET &TABLE. ;
     
          %do i=1 %TO &nbr.;
             RENAME %scan("&old_var",&i,",")=%sysfunc(cats(&mv_num.,%scan("&old_var",&i,",")));
          %end;
    run;
    %mend;
     
    %RENAME ( Export_vie, _01_);
    %RENAME ( Liste_OPP_vie, _02_);
    %RENAME ( ExportPers, _03_);
    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

  5. #5
    Membre régulier
    Femme Profil pro
    Gestionnaire administrative
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Gestionnaire administrative
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Points : 73
    Points
    73
    Par défaut
    La bibliothèque j'avais remarqué j'avais déjà essayé mais ça me fait la même remarque...

  6. #6
    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
    Si la bibliothèque BIBLI existe bien , il faut mettre le nom des tables en majuscule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    %RENAME ( EXPORT_VIE, _01_);
    %RENAME ( LISTE_OPP_VIE, _02_);
    %RENAME ( EXPORTPERS, _03_);
    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

  7. #7
    Membre régulier
    Femme Profil pro
    Gestionnaire administrative
    Inscrit en
    Mars 2013
    Messages
    95
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Gestionnaire administrative
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 95
    Points : 73
    Points
    73
    Par défaut
    Merci pour toutes ces réponses mais finalement je l'ai fait à la main... C'était une demande urgente de mes supérieurs.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 08/02/2012, 14h24
  2. Plusieurs variables dans Dim et Case??
    Par samlepiratepaddy dans le forum Access
    Réponses: 2
    Dernier message: 02/10/2005, 18h04
  3. Envoyer plusieur variable a un programme
    Par scaleo dans le forum Langage
    Réponses: 9
    Dernier message: 06/09/2005, 11h09
  4. envoyer plusieurs variables dans l'url?
    Par brgui dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/08/2005, 14h18
  5. Réponses: 5
    Dernier message: 28/04/2004, 16h06

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