Les posteurs les plus actifs de la semaine
Eric Wajnberg
 
zezima
 
Nik
 
margotte185
 
c@ssoulet
 
Coco
 
Ayana
 


Equivalent dans une boucle ?

Voir le sujet précédent Voir le sujet suivant Aller en bas

Equivalent dans une boucle ?

Message par Mac_Leod le Ven 13 Mai 2016 - 8:16

Hello,

Question bête ... mais je cherche à automatiser un bout de programme assez simple sans en trouver une solution.
Je cherche en bref à déclarer des macros variables et qu'elles aient la forme suivante : 1601, 1602, 1603, ..., 1612.

Les deux premiers chiffres représentent l'année 2016 et les deux derniers le mois. Le 16 est déjà déclaré. Mais de quelle façon pourrais - je ajouter les deux autres chiffres avec une boucle ? Ce qui me pose soucis dans ce cas, c'est le "0" pour les 9 premier cas. J'ai peur d'obtenir 161, 162, etc ... au lieu de mes résultats en utilisant un %do i=0 to 12.

Je cherche un équivalent à ce bout de code grossier :

Code:
%let annee = %substr(&year0.,3,2);
/* "year0" correspondant à 2016. */
 
%let mois_1  = &annee.01;
%let mois_2  = &annee.02;
%let mois_3  = &annee.03;
%let mois_4  = &annee.04;
%let mois_5  = &annee.05;
%let mois_6  = &annee.06;
%let mois_7  = &annee.07;
%let mois_8  = &annee.08;
%let mois_9  = &annee.09;
%let mois_10 = &annee.10;
%let mois_11 = &annee.11;
%let mois_12 = &annee.12;

Mac_Leod

Nombre de messages : 28
Date d'inscription : 25/06/2015

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Equivalent dans une boucle ?

Message par niaboc le Ven 13 Mai 2016 - 10:55

Bonjour,

tu peux faire une boucle en rajoutant une condition du genre :

Code:
%do i=1 %to 12;
 %if &i<10 %then %do;
  %let i=0&i;
 %end;

 /*blablabla*/

%end;

Niaboc
avatar
niaboc

Nombre de messages : 918
Age : 30
Localisation : Paris
Date d'inscription : 05/05/2008

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Equivalent dans une boucle ?

Message par joyeux_lapin13 le Ven 13 Mai 2016 - 10:56

Tu as peur...

Pourtant moi si je teste ton code ça l'air de marcher, te suffit juste d'automatiser en faisant:

Ca ne marche pas si tu fais,

Code:

%macro test();

%let annee = %substr(2016,3,2);
    /* "year0" correspondant à 2016. */
   
  %do t = 1 %to 12;
%if &t. < 10 %then %do;
%let mois_&t. = &annee.0&t.;
%end;
%if &t. >= 10 %then %do;
%let mois_&t. = &annee.&t.;
%end;
%end;

%put &mois_1. &mois_5. &mois_12.;

%mend;

%test();

?
avatar
joyeux_lapin13

Nombre de messages : 1881
Age : 34
Localisation : Mayotte
Date d'inscription : 21/04/2010

Voir le profil de l'utilisateur https://lemakistatheux.wordpress.com/

Revenir en haut Aller en bas

Re: Equivalent dans une boucle ?

Message par joyeux_lapin13 le Ven 13 Mai 2016 - 10:57

Plus sexy ton p'tit 0&i.
avatar
joyeux_lapin13

Nombre de messages : 1881
Age : 34
Localisation : Mayotte
Date d'inscription : 21/04/2010

Voir le profil de l'utilisateur https://lemakistatheux.wordpress.com/

Revenir en haut Aller en bas

Re: Equivalent dans une boucle ?

Message par Mac_Leod le Ven 13 Mai 2016 - 12:19

Merci beaucoup, les deux solutions fonctionnent parfaitement.

Mac_Leod

Nombre de messages : 28
Date d'inscription : 25/06/2015

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Equivalent dans une boucle ?

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum