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 :

dates et variables macro calculées


Sujet :

Macro

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Data Analyst
    Inscrit en
    Octobre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Data Analyst

    Informations forums :
    Inscription : Octobre 2019
    Messages : 5
    Points : 5
    Points
    5
    Par défaut dates et variables macro calculées
    Hello,

    Je voudrais créer une variable macro (dt_deb_m_1) qui prenne la valeur « 01/09/2020 » par calcul à partir d’une autre variable macro (dt_deb) qui vaut « 01/10/2020 » par exemple
    L’idée est de pouvoir enlever/ajouter « x » mois à la variable macro initiale.
    J’ai tenté le code suivant mais je n’ai pas le résultat attendu …
    Qui a une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    %let aaaamm = 202010; /* le paramètre en entrée */
     
    %let annee = %substr(&aaaamm,1,4); 		                              /* 10 */
    %let mois = %substr(&aaaamm,5,2);		                                     /* 2020 */
    %let dt_deb = %sysfunc(putn(%sysfunc(mdy(&mois.,1,&annee.)),ddmmyy10.)); 	   /*01/10/2020*/
    %put &dt_deb; 
     
    %let dt_deb_m_1 = %sysfunc(putn(%sysfunc(intnx(month,&dt_deb,-1,s)),ddmmyy10.)); 
    %put &dt_deb_m_1; /* 01/12/1959 ???? un jour de moins avant l’init des dates SAS */

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 482
    Points : 1 547
    Points
    1 547
    Par défaut
    Bonjour,
    Il est souhaitable que le paramètre en entrée soit au format "01Oct2020"d.
    Proposition à vérifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    %let dt_deb = "01Oct2020"d ; 
    %let dt_deb_m_1  = %sysfunc(intnx(MONTH, &dt_deb., -1), ddmmyy10.) ;
    %put &dt_deb_m_1 ;
    Bon Courage
    Ward

  3. #3
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    @ VLP_SAS, ton code ne fonctionne pas parce que dt_deb, qui vaut bien 01/10/2020, est ensuite interprété dans le INTNX comme une division : 1 divisé par 10 divisé par 2020, c'est à dire pas loin de 0. Donc du 01/01/1960 si on l'interprète ensuite comme une date SAS.
    Comme le dit Hoss, avec une date initiale que SAS comprend, ça fonctionne très bien.
    Autre proposition : faire l'économie de tous ces %SYSFUNC en passant par une étape Data.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    %LET dt_deb = 202010 ;
    DATA _NULL_ ;
      dt_deb = INPUT("&dt_deb.01", YYMMDD8.) ;
      PUTLOG dt_deb DDMMYY10. ; /* pour vérifier */
      dt_deb_m_1 = INTNX("MONTH", dt_deb, -1, "S") ;
      PUTLOG dt_deb_m_1 DDMMYY10. ; /* vérif toujours */
      CALL SYMPUTX("dt_deb_m_1", dt_deb_m_1) ;
    RUN ;
    Bon courage.
    Olivier

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Data Analyst
    Inscrit en
    Octobre 2019
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Data Analyst

    Informations forums :
    Inscription : Octobre 2019
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Merci Olivier
    Tes réponses sont toujours très instructives

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 31/08/2014, 18h16
  2. Format date pour une macro variable
    Par idhmida dans le forum Macro
    Réponses: 5
    Dernier message: 18/12/2012, 18h58
  3. Réponses: 2
    Dernier message: 22/04/2009, 10h47
  4. [Q] VB Excel: Macros calcul de date jours ouvrés
    Par naouara17 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 13h59
  5. Réponses: 6
    Dernier message: 08/11/2005, 19h33

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