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 :

Calcul du nombre de jours écoulés entre deux dates


Sujet :

Macro

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Calcul du nombre de jours écoulés entre deux dates
    Bonjour,

    J'aimerais calculer le nombre de jour entre deux dates et j'avais un code dans lequel j'avais demandé de l'aide. seulement ce code ne convient pas aux résultats que je voulais avoir. La j'ai une autre façon de faire seulement j'ai un petit problème la condition de k=2 et k>3 n'est jamais vérifiée. Voici 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    %let k     = 1 ;
     
    DATE   = date() ;
    MOIS   = month(DATE) ;
    output ;
     
        %if &k = 1 %then %do ;
         DATE = DATE + (7*13);
    	 MOIS2 = month(DATE) ;
          if MOIS2 ne MOIS then do ;
             MOIS = month(DATE) ;
             %let j = (&k+1) ;
    	 %let l = %eval(&j);
           	 %put l;
    	 N=N+1 ;
    	 output ;
    	  end;
         %end;
     
         %else %if &k = 2 %then %do;
          DATE = DATE + (7*26);
            MOIS2 = month(DATE) ;
             if MOIS2 ne MOIS then do ;
             MOIS = month(DATE) ;
             %let j = (&k+1) ;
    		 %let l = %eval(&j);
             output;
    	     end;
    	 %end;
     
         %else %do ;
            %do &k = 3 %to 30 ;
              DATE = DATE + 365 ;
              MOIS2 = month(DATE) ;
              if MOIS2 ne MOIS then do ;
              MOIS = month(DATE) ;
              %let j = (&k+1) ;
    	  %let l = %eval(&j);
             output ;
             end ;
      	  %end ;
     
         %end;
    Merci de votre aide .
    NEFTAHA

  2. #2
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    Tu initialises ta macro variable K à 1, mais aucune modification sur K n'est effectuée dans le code que tu présentes. Donc tu rentres toujours dans la condition k=1.

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Re

    Mais même si j'incrémente la macro variable k.
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    %let k     = 1 ;
    
    DATE   = date() ;
    MOIS   = month(DATE) ;
    output ;
    
        %if &k = 1 %then %do ;
         DATE = DATE + (7*13);
    	 MOIS2 = month(DATE) ;
          if MOIS2 ne MOIS then do ;
             MOIS = month(DATE) ;
             %let k = %eval(&k+1) ;
    		 %put k;
    		 N=N+1 ;
    	     output ;
    	  end;
        %end;
    	
        %else %if &k = 2 %then %do;
          DATE = DATE + (7*26);
            MOIS2 = month(DATE) ;
             if MOIS2 ne MOIS then do ;
             MOIS = month(DATE) ;
             %let k = %eval(&k+1) ;
             output;
    	     end;
    	 %end;
    run;
    merci

  4. #4
    Rédacteur

    Homme Profil pro
    SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Inscrit en
    Avril 2009
    Messages
    2 497
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : SAS ALLIANCE SILVER. Consultant et formateur SAS et Cognos.
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 2 497
    Points : 6 064
    Points
    6 064
    Par défaut
    Quel est ton soucis avec INTNX, INTCK et autres fonctions automatiques ?
    N'oubliez pas de cliquer sur lorsque votre problème est réglé !

  5. #5
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    Tu rentres dans ton then puis tu incrémentes!!

    tu ne peux pas rentrer dans ton else..

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par datametric Voir le message
    Quel est ton soucis avec INTNX, INTCK et autres fonctions automatiques ?
    En fait je n'ai pas de souci juste que j'ai une exeption pour 3 et 6 mois, je dois calculer le nombre de jour écoulés a l'aide du nombre de semaine c'est à dire pour 3 mois = 7*13 semaines de même pour 6 mois = 7*26 et pour le reste de 1 an à 30 ans je le calcule avec 365 jours. Donc à cause de ses 2 exceptions je n'utilise pas la fonction INTNX.

    merci

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2009
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Manoutz Voir le message
    Tu rentres dans ton then puis tu incrémentes!!

    tu ne peux pas rentrer dans ton else..
    Bonjour,

    Où dois je incrémenter? Quand j'incrémente entre les deux end je passe dans la boucle de K= 2 et c tout.
    Merci de votre aide

  8. #8
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    Je ne connais pas ton objectif donc c'est à toi de revoir ton algorithme.

    Ceci étant, pour être pratico-partique, si ton enlève ton %else tu devrais rentrer dans le deuxième %if (mais ceci ne répond pas à la question sur l'algo..)..

Discussions similaires

  1. Calcul de nombre de jours ouvrable entre deux date
    Par etienneborms dans le forum Débuter
    Réponses: 6
    Dernier message: 30/01/2012, 10h53
  2. Réponses: 1
    Dernier message: 22/03/2007, 17h04
  3. Réponses: 1
    Dernier message: 10/08/2006, 14h43
  4. Compter le nombre de jours écoulés entre deux dates
    Par koKoTis dans le forum VBScript
    Réponses: 8
    Dernier message: 07/08/2006, 19h44

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