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 :

Boucle et déclaration de macro variable


Sujet :

Macro

  1. #1
    Membre à l'essai
    Femme Profil pro
    Chargée d'étude statistiques
    Inscrit en
    Mai 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargée d'étude statistiques
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2019
    Messages : 15
    Points : 19
    Points
    19
    Par défaut Boucle et déclaration de macro variable
    Bonjour à tous,

    J'ai un petit problème avec le call symput. J'ai un petit morceau de programme qui fonctionne très bien quand je n'ai besoin de le faire qu'une seule fois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Proc contents data= limitm_FR  out=contents; run;
     
         Proc sql; 
         Create table temp as
         Select distinct count(NAME) as nb_var 
         from contents 
         where name like "FR%"; 
         quit;
     
         Data _NULL_;
         set temp;
         Call symput("nb_var",nb_var);
         run;
    Cependant, je dois le reproduire sur plusieurs années (j'ai donc un table qui correspond à chaque année). J'ai bêtement essayé 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
    %Macro LPP4;
    %do annee=2011 %to 2017;
     
         Proc contents data= limitm_FR_&annee   out=contents; run;
     
         Proc sql; 
         Create table temp as
         Select distinct count(NAME) as nb_var 
         from contents 
         where name like "FR%"; 
         quit;
     
         Data _NULL_;
         set temp;
         Call symput("nb_var_&annee",nb_var);
         run;
    %end;
    %mend LPP4;
     
    %LPP4;
    Sauf que le Call sympput n'aime pas nb_var_&annee et j'ai comme résultat nb_var_2011 etc.

    Je pense que c'est une erreur bête, mais je ne vois pas comment m'en sortir.

    Merci par avance pour toute l'aide que vous pourrez m'apporter.
    Camille

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Créer une macro variable dans une procédure SQL
    Bonjour,

    Vous pouvez créer la macro variable directement dans la proc sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    %macro LPP4;
      %do annee=2011 %to 2017;
        proc contents data=limitm_FR_&annee out=contents;
        run;
     
        proc sql;
          select distinct count(name) into : nb_var&annee
            from contents
            where name like "FR%";
        quit;
     
        %put &&nb_var&annee;
      %end;
    %mend;
    Cette page pourra vous intéresser : 3 méthodes pour construire des macros variables sans macro.

    Cordialement,

    PS : Pensez à utiliser les balises [CODE] et à indenter vos programmes pour faciliter la lecture de vos messages. Vous pouvez éditer votre précédent message.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Chargée d'étude statistiques
    Inscrit en
    Mai 2019
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Chargée d'étude statistiques
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2019
    Messages : 15
    Points : 19
    Points
    19
    Par défaut
    Merci beaucoup pour votre réponse! Je ne l'ai pas encore testé (manque de temps) mais elle semble résoudre mon problème. J'oublie tout le temps qu'il est possible de créer des macros avec une proc SQL.

    Promis, je serai vigilante pour mes prochaines publications et ferai attention à utiliser balises et indentations.

    Merci encore!!

Discussions similaires

  1. Réponses: 40
    Dernier message: 04/11/2016, 17h28
  2. Boucle pour obtenir plusieurs macro variables
    Par elimaur dans le forum Macro
    Réponses: 7
    Dernier message: 19/11/2014, 12h51
  3. Macro variables dans boucles
    Par Mamouthy dans le forum Macro
    Réponses: 5
    Dernier message: 21/03/2013, 15h57
  4. Boucle sur une macro variable
    Par Goris dans le forum Macro
    Réponses: 2
    Dernier message: 24/08/2012, 11h09
  5. [XL-2003] macro, variable et boucle
    Par Giantrick dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 12/04/2011, 23h49

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