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

Access Discussion :

Calcul d'écart de date (année, mois, jour,etc)


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Points : 34
    Points
    34
    Par défaut Calcul d'écart de date (année, mois, jour,etc)
    Bonjour à tous,

    Avez vous remarqué que toutes les fonctions comme DateDiff(...), Année(...), mois(...), renvoie des calculs (nombre d'année par example entre 2 dates) arrondies !
    ... et non tronqué

    C'est problématique pour les personnes qui comme moi veulent calculer des ages ou autre différence de date pour aplliquer un bareme derrière : il faut que le calcul de la date renvoie un age révolu et non arrondie.

    N'ayant rien trouvé de mieux je vous livre ma solution et peut être que vous en avez une meilleure (existe t'il un paramétrage de DateDiff qui tronque plutôt qu'arrondir ?)

    Pour le calcul d'année révolues:
    Ent(Date()-[Date de naissance])/365,25)

    Pour le calclul de moisvrévolues et restant après le calcul des années :
    Ent(((([Date()-[Date de naissance])/365,25)-Ent((Date()-[Date de naissance])/365,25))*12)

    etc...

    A vos commentaires !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Points : 34
    Points
    34
    Par défaut
    euhhhh... milles excuses !

    Ma formule sur les mois donne une approximation à 2 ou 3 jours près ! (de par le fait que les mois ne sont pas tous égaux !)
    Bon je cherche autre chose

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir,

    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =AgeX([Date de naissance];Date())
    Dans un module :
    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
    Function AgeX(dn As Date, dx As Date) As String
    'Objectif: calcul de l'âge en années et mois pleins
    'Arguments: dn = date de naissance, dx = date quelconque
         Dim y1 As Integer, y0 As Integer, m1 As Integer, m0 As Integer
         Dim d1 As Integer, d0 As Integer
         d1 = Day(dx)
         m1 = Month(dx)
         y1 = Year(dx)
         d0 = Day(dn)
         m0 = Month(dn)
         y0 = Year(dn)
         If d0 > d1 Then m0 = m0 + 1
         If m0 > m1 Then
             y0 = y0 + 1
             m1 = m1 + 12
         End If
         AgeX = (y1 - y0) & " ans, " & (m1 - m0) & " mois"
    End Function
    Cordialement.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Points : 34
    Points
    34
    Par défaut

    Excellent, cela dit je voudrais s'il te plait l'adapter un peu à mon cas (je ne maitrise pas le vba et serait donc obligé de refaire des calculs sur le champs issue de ton code un peu... "sales" )

    Mes barèmes ages sont gérés dans un champs qui affiche le même type d'info que toi mais ne stocke en fait que 'aamm' sous format numérique.
    Je serai très bien enlever les termes "ans" et "mois" dans ton code, mais comment faire pour qu'il ai toujours 2 chiffres au niveau des mois (je fais des comparaisons >,<,... entre l'age et le bareme donc pas grave pour les années mais pour les mois il me faut absolument le "0" devant le mois à un seul chiffre)

    A l'origine j'avais contourné le pb dans mes fonctions et faisant un test du genre :
    si nbcar mois = 1 alors rajoute "0" entre les ans et les mois

    Merci pour ton aide

  5. #5
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    il suffit de modifier le code de Francishop

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AgeX = (y1 - y0) & " ans, " & (m1 - m0) & " mois"
    devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AgeX = Right$("000" & (y1 - y0), 3) & Right$("00" & (m1 - m0), 2)
    J'ai mis 3 pour l'année car il existe des centenaires

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 56
    Points : 34
    Points
    34
    Par défaut
    Merci beauoup.
    Cela fonctionne Nickel, cela dit, c'est pour gérer des vaches, alors des vaches centenaires, elles ne vont pas très tendres !
    Du coup je suis resté sur ça car les 0 devant les années ne m'intéresse pas.
    Code :
    AgeX = (y1 - y0) & Right$("00" & (m1 - m0), 2)

    et encore

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 34
    Points : 19
    Points
    19
    Par défaut En faite une question Calcul Age en années et mois et jours
    Comment faire pour afficher ce calcul de l'âge en année et mois et jours style
    53 ans et 2 mois et 10 jours ?

    Merci d'avance pour votre aide

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 335
    Points : 19 574
    Points
    19 574
    Billets dans le blog
    65
    Par défaut
    Salut,

    Je me permet de répondre à la place de Francishop , qui maîtrise mieux son code que moi

    Tu peux a nouveau partir de la fonction de Francishop,

    et juste avant l'affectation mettre le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ...
     
    dn = DateAdd("yyyy", (y1 - y0), dn)
    dn = DateAdd("m", (m1 - m0), dn)
     
    AgeX = (y1 - y0) & " ans, " & (m1 - m0) & " mois, " & DateDiff("d", dn, dx) & " jours"
    A+
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

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

Discussions similaires

  1. Calcul de durée entre deux dates en années, mois, jours, heures, minutes, secondes et reste
    Par Invité dans le forum Algorithmes et structures de données
    Réponses: 19
    Dernier message: 02/10/2015, 12h31
  2. Calcul années, mois, jours entre 2 dates
    Par MuLog dans le forum SQL
    Réponses: 12
    Dernier message: 14/09/2010, 11h57
  3. [V6] Calcul d'une durée en année mois jours
    Par herve rennes dans le forum Deski
    Réponses: 7
    Dernier message: 11/02/2009, 23h37
  4. Fonction date année, mois jour?
    Par Portekoi dans le forum DB2
    Réponses: 1
    Dernier message: 11/12/2007, 11h45
  5. [MySQL] Ecart de temps décomposé en différentes unités (années, mois, jours, etc)
    Par Anduriel dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 01/03/2006, 09h38

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