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 :

Exécuter macro en fonction de la valeur d'une variable


Sujet :

Macro

  1. #1
    Membre régulier
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2012
    Messages : 115
    Points : 74
    Points
    74
    Par défaut Exécuter macro en fonction de la valeur d'une variable
    Bonjour à tous,

    J'ai cette macro variable en début de programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    %global choix ;
    %let choix = "4" ; /****partie 1 (1) ; partie 2 (2) ; partie 3 (3) partie 1 et 3 (4)****/
    %put &choix ;
    Ensuite mon code est organisé de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    %macro un() ;
    ....
    %mend ;
     
    %macro deux() ;
    ....
    %mend ;
     
    %macro trois() ;
    ....
    %mend ;
    J'ai ensuite cette data en fin de code, qui permet d'exécuter une partie du code choisi précédemment par l'utilisateur grace à la macro variable &choix.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    data _null_ ;
    if &choix = "1" then %un() ;
    if &choix = "2" then %deux() ;
    if &choix = "3" then %trois() ;
    if &choix = "4" then  %un()  %trois() ;
     
    run ;
    mais quand je choisi le choix "4", SAS exécute la macro un, puis la deux et la trois alors que j'aimerai qu'il éxécute seulement la un et la trois.
    Est-ce que c'est possible?

    Aussi, j'ai une erreur, SAS me souligne "data" (c'est le premier data de la macro un()), cette data marche (c'est une importation de fichier) mais pas quand je la lance depuis le data des if. (SAS n'a pas l'air d'apprécier le double data : data des if et data de l'import).
    NOTE: Line generated by the invoked macro "un".
    data lib.donnees; infile "&chemin.\Données\donnees.csv" delimiter = ...
    ERROR 180-322: Statement is not valid or it is used out of proper order.
    Merci d'avance!

  2. #2
    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
    Il vaut mieux utiliser un macro programme au lieu d'une étape data
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    %macro test;
    %let choix=4;
    %IF &choix = 1 %then %un() ;
    %IF &choix = 2 %then %deux() ;
    %IF &choix = 3 %then %trois() ;
    %IF &choix = 4 %then  %un()  %trois() ;
    %mend;
    %test;
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

  3. #3
    Membre régulier
    Femme Profil pro
    Inscrit en
    Avril 2012
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Avril 2012
    Messages : 115
    Points : 74
    Points
    74
    Par défaut
    Super, ça marche merci!!

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/02/2012, 09h01
  2. Réponses: 13
    Dernier message: 07/11/2011, 15h41
  3. macro excel renvoyant toutes les valeurs d'une variable
    Par eclipse012 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/11/2008, 15h41
  4. lancer une macro en fonction de la valeur d'une cellule
    Par arkorrigan dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 11/06/2008, 17h18

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