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

Deski Discussion :

Ajouter des années, des mois à une date [V6]


Sujet :

Deski

  1. #1
    Membre actif
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Points : 217
    Points
    217
    Par défaut Ajouter des années, des mois à une date
    Bonjour

    J'ai un problème pour créer une formule de calcul sur les dates et je sollicite vos conseils sachant que je n'ai pas accès au designer.
    Je dois faire une requête pour calculer les dates de départs en retraite.
    J'ai un objet type dimension date de naissance sur lequel je vais m'appuyer pour faire ma formule.

    Il faut donc que ma formule puisse me calculer de la manière suivante :

    si la date de naissance est comprise entre le 01/01/1952 et 31/03/1952, il faut prendre la date et ajouter 9 mois sinon si la date de naissance est comprise entre le 01/01/1953 et 31/10/1953 alors il faut prendre la date et ajouter 1 an et 2 mois sinon si la date de naissance est entre 01/01/1954 et 31/05/1954 alors il faut ajouter 1 an et 7 mois.

    Je n'arrive pas a concevoir cette formule.
    Si vous pouvez me donner un coup de main. Il y aura certainement un problème sur les jours au niveau des fin de mois mais ce n'est pas grave, car cela reste une prévision.
    Un grand merci par avance.

  2. #2
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Bonjour,
    1ère étape : le test sur la date de naissance
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Test Date = Si (<DOS - Date naissance> Entre ('01/01/1952 00:00:00' ,'01/03/1952 00:00:00')  
    Ou  <DOS - Date naissance> Entre ('01/01/1953 00:00:00' ,'31/10/1953 00:00:00') 
    Ou <DOS - Date naissance> Entre ('01/01/1954 00:00:00' ,'31/05/1954 00:00:00')) 
    Alors "x"
    2ème étape : Déterminer le nombre de mois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Nb Mois = Si (<DOS - Date naissance> Entre ('01/01/1952 00:00:00' ,'01/03/1952 00:00:00') ) Alors 9 
    Sinon Si (<DOS - Date naissance> Entre ('01/01/1953 00:00:00' ,'31/03/1953 00:00:00') ) Alors 14 
    Sinon Si (<DOS - Date naissance> Entre ('01/01/1954 00:00:00' ,'31/05/1954 00:00:00') ) Alors 19
    3ème étape évaluer en années et mois le nombre de mois étape de validation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Passage année = Si(<Nb Mois> > (24 - NuméroDuMoisDeAnnée(DateActuelle()))) Alors 2  
    Sinon Si(<Nb Mois> > (12 - NuméroDuMoisDeAnnée(DateActuelle()))) Alors 1 
    Sinon 0
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ajout mois = Si (<Nb Mois>>0)  Alors
    (<Nb Mois> - (1*(12 - NuméroDuMoisDeAnnée(DateActuelle()) ) )  - ((<Passage année> -1) *12)
    soustraction des mois à venir de l'année en cours
    soustraction du nombre de mois des années pleines suivantes

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Ajout année mois txt = Si(<Nb Mois> >0) 
    Alors  FormatDeNombre(Année(DateActuelle())+<Passage année> ,"0000") & FormatDeNombre(<Ajout mois> ,"00") 
    & FormatDeNombre(NuméroDuJourDuMois(DateActuelle()) ,"00")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Date Recherchée = EnDate(<Ajout année mois txt>,"aaaammjj")
    Images attachées Images attachées  
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

  3. #3
    Membre actif
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Avril 2009
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2009
    Messages : 200
    Points : 217
    Points
    217
    Par défaut
    Merci bruno
    je n'aurais jamais pensé devoir faire autant de formules, d'ailleurs à partir de la 3ème étape je suis largé complet
    Je comprends pourquoi tu es rédacteur.
    j'ai encore beaucoup de progrès à faire dans la création de formules
    Dans des cas complexes comme celui la, je n'arrive pas à envisager tous les tenants et aboutissants pour créer ma ou mes formules et arriver au résultat escompté.

    Je comprend mieux d'ailleurs la réflexion de certains forumeurs qui ,sur des précédents posts de ce type, avaient indiqué qu'il valait mieux quand cela était possible, rajouter un objet type add months via le designer.

    Dans tous les cas, je vais essayer de mettre cela en place dans l'attente de voir si mon service informatique peut modifier un de mes univers et me rajouter le add month.

    Je te remercie beaucoup bruno et salue tes compétences.
    Respect

  4. #4
    Rédacteur
    Avatar de Bruno2r
    Homme Profil pro
    Exploitation des données
    Inscrit en
    Décembre 2006
    Messages
    2 566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Exploitation des données
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 566
    Points : 4 780
    Points
    4 780
    Par défaut
    Heureux d'avoir pu t'aider, nous sommes là pour cela ... partager nos expériences.
    Il faut dire qu'en travaillant sur les dates tu n'as pas choisi le domaine le plus simple.

    Au sujet de l'ajout de mois et dans ton cas, la difficulté qui compléxifie largement les formules est le changement d'année.
    On rencontre parfois des personnes qui ajoutent des jours sur la base d'un mois de 30 jours mais évidemment cela ne donne pas une date exacte.

    La formule Passage année est la plus importante car elle calcule de combien sera incrémentée l'année en fonction du nombre de mois ajoutés (variable Ajout mois).
    Dans ton exemple le maximum de mois ajoutés est de 19 le test sur 24 mois suffit donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Passage année = 
    Si(<Nb Mois> > (24 - NuméroDuMoisDeAnnée(DateActuelle()))) Alors 2  
    Sinon Si(<Nb Mois> > (12 - NuméroDuMoisDeAnnée(DateActuelle()))) Alors 1 
    Sinon 0
    Mais si tu devais appliquer une règle d'ajout de 2 ans et 8 mois ... il faudrait également tester le passage à 3 ans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Passage année = 
    Si(<Nb Mois> > (36 - NuméroDuMoisDeAnnée(DateActuelle()))) Alors 3 
    Sinon Si(<Nb Mois> > (24 - NuméroDuMoisDeAnnée(DateActuelle()))) Alors 2 
    Sinon Si(<Nb Mois> > (12 - NuméroDuMoisDeAnnée(DateActuelle()))) Alors 1 
    Sinon 0
    Explication du test sur le Nombre de Mois :
    Pour savoir si nous allons changé d'année en appliquant la majoration de date en mois, il faut comparer ce nombre de mois à ajouter avec le nombre de mois restants dans l'année en cours.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     (12 - NuméroDuMoisDeAnnée(DateActuelle()))
    Sachant que nous sommes aujourd'hui le 27/06/2012
    On peut ajouter jusqu'à 6 mois sans atteindre la fin de l'année.

    Si on ajoute 8 mois en revanche, on dépasse le 01/01/2012, il faut donc incrémenter l'année de 1 et il restera 2 mois à ajouter à partir de janvier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (<Nb Mois> - (1*(12 - NuméroDuMoisDeAnnée(DateActuelle()))))
     
    = 8 - (1*(12-6) = 8-6 = 2
    Si on ajoute 1 an et 7 mois = 19 mois,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    année = Si(<Nb Mois> > (24 - NuméroDuMoisDeAnnée(DateActuelle()))) Alors 2  
    Sinon Si(<Nb Mois> > (12 - NuméroDuMoisDeAnnée(DateActuelle()))) Alors 1 
    Sinon 0
     
    =Si(19 > (24 - 6)  Alors 2
    =Si(19 > 18... oui Alors 2 passage d'année
     
    2012 deviendra 2014
    et il restera en mois :
    (<Nb Mois> - (1*(12 - NuméroDuMoisDeAnnée(DateActuelle()) ) )  - ((<Passage année> -1) *12) 
    Le reste del'année en cours les anneés suivantes
     
    = 19 - (1*(12-6) - (1*12) = 19 - (12-6) - 12 = 1 mois
    N'hésite pas à nous faire lire ta formule si besoin est....
    Précisez la VERSION !
    Un message vous a aidé ? Votez en cliquant sur Pensez au bouton
    Tutoriels BO et FAQ BO
    "A vouloir repousser ses limites ... On risque d'en prendre connaissance !!!"

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

Discussions similaires

  1. Ajouter des mois à une date
    Par SOPSOU dans le forum InterBase
    Réponses: 3
    Dernier message: 17/11/2010, 15h20
  2. ajouter un nombre de mois à une date
    Par PAYASS59 dans le forum Webi
    Réponses: 11
    Dernier message: 18/03/2010, 15h33
  3. ajouter un nombre de mois à une date
    Par mèmaton dans le forum WinDev
    Réponses: 7
    Dernier message: 22/04/2009, 11h30
  4. Ajouter des mois à une date TDateTime
    Par yashiro41281 dans le forum Langage
    Réponses: 3
    Dernier message: 05/10/2007, 10h25
  5. [Dates] Ajouter des mois à une date
    Par tiger63 dans le forum Langage
    Réponses: 8
    Dernier message: 25/05/2007, 16h42

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