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 :

Utiliser une valeur d'une variable dans une Macro


Sujet :

Macro

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 61
    Points : 52
    Points
    52
    Par défaut Utiliser une valeur d'une variable dans une Macro
    Bonjour,

    Je m'explique, j'ai une table sas avec plusieurs variables dont une qui s'appelle "ENTITE". Cette variable "ENTITE" contient plusieurs valeurs : "CACI", "VIVO" , ...


    Mon programme actuel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    %LET annee =2013;
    %LET mois = 6;
    %LET entite = ENTITE like 'CASA';
    %LET entite = ENTITE like 'VIVO';
     
     
     
    %MACRO EXTRACTION (Annee,Mois,Entite);
    ...
     
    %EXTRACTION(&annee.,&mois.,&entite.);
    Pour l'instant je suis obligé de mettre en commentaire VIVO pour avoir les donnée de CASA puis après je dois mettre en commentaire CASA pour avoir les données de VIVO.
    Cela me fait lancer 2 fois le programmes donc ce n'est pas pratique.


    Je souhaiterai faire appelle à cette Macro pour chaque type d'ENTITE mais en lançant que une fois le programme.

    Comment puis-je faire ?

    Mercii d'avance pour votre aide

  2. #2
    Membre actif
    Inscrit en
    Juillet 2010
    Messages
    199
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 199
    Points : 214
    Points
    214
    Par défaut
    Bonjour,

    si tu ne veux qu'un seul lancement, tu dois récupérer les valeurs de entite dans une macrovariable et ensuite tu bouleras sur les différentes valeurs celle-ci.

    Tu récupères grace à une sql les valeurs de entite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Proc sql noprint ; 
    select distinct entite into : &list separated by '*'
    from table ;
    quit ;
     
    %put &list ;
    Ensuite tu boucles sur les valeurs de &list en la scannant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    %macro entite() ;
     
    %let i = 1 ;
    %do %while(%scan(&list,&i.,*) ne ) ;
     
    	%let entite= %scan(&list.,&i.,*) ;
    ....
    ....
     
    %let i=%eval(&i+1) ;
    %end ;
     
    %mend entite ;
    Comme ça, tu peux faire un seul appel de ta macro.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 61
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par mohamed_ Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Proc sql noprint ; 
    select distinct entite into : &list separated by '*'
    from table ;
    quit ;
     
    %put &list ;
    J'ai un problème avec la deuxième ligne, cela me dit "expecting a separated"
    Voila mon code

    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
    	PROC SQL;
       		CREATE TABLE WORK.VILS AS 
      			 SELECT  t1.*,
    		  	     	 t2.ENTITE      
          	FROM V.VILSOU t1 INNER JOIN V.VILSOA t2
    	  	ON t1.CO = t2.NUM_CO;
    	QUIT;
     
     
    PROC SQL NOPRINT; 
    SELECT DISTINCT ENTITE INTO : &list separated BY '*'
    FROM WORK.VILS ;
    QUIT ;
     
    %PUT &list ;
    AS tu une idée pourquoi ? Il faut que je déclare "list" avant le programme ?

  4. #4
    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
    Si la PROC SQL ne renvoit pas de résultat, la macro variable ne sera pas créée.
    Cela générera des avertissements si tu l'utilises dans ce cas la.
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 61
    Points : 52
    Points
    52
    Par défaut
    C'est un problème au niveau de la proc SQL. La deuxième dans mon programme. Au niveau de la ligne SELECT DISTINCT ENTITE INTO : &list separated BY'*'

    C'est à ce niveau que ça bloque...

  6. #6
    Membre éprouvé
    Homme Profil pro
    Statisticien/développeur BI
    Inscrit en
    Janvier 2012
    Messages
    326
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Statisticien/développeur BI
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2012
    Messages : 326
    Points : 1 142
    Points
    1 142
    Par défaut
    Il faut aussi ne pas mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INTO : &list separated by '*'
    mais plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INTO :list separated by '*'
    car c'est le paramètre INTO qui va créer ta macro variable

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 61
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par edward carnby Voir le message
    Il faut aussi ne pas mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INTO : &list separated by '*'
    mais plutot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INTO :list separated by '*'
    car c'est le paramètre INTO qui va créer ta macro variable
    Merci, c'était l'erreur ^^

    Par contre j'ai pas trop compris pour la macro, Comment je l'intègre dans ma macro que j'ai mi plus haut ?

  8. #8
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    61
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2013
    Messages : 61
    Points : 52
    Points
    52
    Par défaut
    Personne ne peut m'aider ?

Discussions similaires

  1. [Débutant] Utiliser la valeur d'un Slider dans une variable
    Par franck34matlab dans le forum Interfaces Graphiques
    Réponses: 19
    Dernier message: 18/10/2013, 17h09
  2. [XSLT] mettre une valeur d'un XML dans une variable ?
    Par xiii34 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 13/04/2007, 18h14
  3. Réponses: 1
    Dernier message: 26/03/2007, 01h12
  4. Réponses: 5
    Dernier message: 14/06/2006, 16h35
  5. Utiliser la valeur d'un input dans une variable php
    Par megane dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/08/2005, 16h02

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