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 :

Convertir nombre en années/mois/jours ou additionner des années/mois/jours [AC-2016]


Sujet :

Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Par défaut Convertir nombre en années/mois/jours ou additionner des années/mois/jours
    Bonjour

    Je sollicite votre aide pour finaliser quelque chose que j'essaie de mettre en place

    Contexte:


    Pour vulgariser imaginer une boite d’intérim avec plusieurs salariés et je doit établir une nouvelle méthode de calcul de leur ancienneté qui va être l'addition de leur jour de chaque contrat qui sera ensuite convertie en Année/Mois et jours.

    Exemple:


    Travailleur A à un contrat 1 qui va du 01/01/2017 au 11/01/2017 cela fait 10 jours pour l'ancienneté ( il n y a pas de notion de jours ouvrés ou travaillés effectifs), je dois ensuite additionner le nombre de jour pour obtenir le total de tous ces contrats et enfin le convertir

    J'ai réussi avec DiffDate("j";[Datedébut];[Datefin]) à obtenir le nombre de jour par contrat et avec une requête de regroupement obtenir le total pour chaque travailleur mais je n arrive pas à convertir ce dernier chiffre en Année/Mois/jours

    j'ai essayé d'une autre manière d'obtenir pour chaque contrat avec SplitDiffDate([Datedébut];[Datefin]) (trouver sur le forum) un résultat sous forme Année/Mois/jours mais je ne peut pas faire de d'addition/regroupement avec ces valeurs

    Je ne suis pas un pro et je sais que je passe à coté de quelque chose je vais continuer mes recherches si une personne vois la solution qu'elle n'hésite pas

  2. #2
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 527
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Ça revient il me semble a calculer des ages en années, mois, jours pour les contrats .

    Une discution sur ce sujet :

    https://www.developpez.net/forums/d1...n-jour-sommes/

    CDLT,
    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

  3. #3
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Par défaut
    Ce n'est pas tout à faire cela

    Avec mes deux façons de faire pour le moment j’obtiens soit :

    - Un nombre exemple 4329 jours de missions intérim que je dois convertir en Année/Mois/Jours et là je bloque pour le moment

    - La durée de chaque contrat déjà convertie exemple pour un contrat de 338 jour il sera afficher comme ceci: 0 ans 11 mois 3 jours, mais je dois ensuite additionner les valeurs sous cette forme

    0 ans 11 mois 3 jours + 2 ans 03 mois 3 jours + 0 ans 0 mois 20 jours et c'est là que je bloque

  4. #4
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 527
    Billets dans le blog
    67
    Par défaut
    Donc, vous prenez un nombre de jours par mois arbitraire, disons 30, et des année de 365.25 jours...avec quelque chose comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Annees =Int (TotalJours / 365.25)
     
    TotalJours =(TotalJours - Annees * 365.25)  ' reste des jours après avoir éliminé les années
     
    Mois =Int( TotalJours  / 30) 
     
    Jours =Int(TotalJours - Mois * 30)
    Cdlt,
    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

  5. #5
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Par défaut
    Il faut donc créer une fonction avec tout cela ? Car je ne suis pas encore à ce niveau de pratique dans Access

    EDIT :

    J'ai trouver ce code dans un autre message, mais quand je le colle dans un module les ligne concernant Dim avec le DateTime sont en rouges, j'imagine qu il a une option à activer

    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
     
        Public Function DateDiffAnneeMoisJour(Nbjour As Integer) As Integer()
     
     
            Dim dateFin As DateTime = Now
            Dim dateDebut As DateTime = Now.AddDays(-Nbjour)
     
            Dim year As Integer = dateFin.Year - dateDebut.Year
            Dim month As Integer = dateFin.Month - dateDebut.Month
            Dim day As Integer = dateFin.Day - dateDebut.Day
     
            If month < 0 Then
                year = year - 1
                month = month + 12
            End If
     
            If day < 0 Then
                month = month - 1
                day = day + DateTime.DaysInMonth(dateDebut.year, dateDebut.month)
            End If
     
            Return {year, month, day}
        End Function

  6. #6
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2015
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms

    Informations forums :
    Inscription : Avril 2015
    Messages : 66
    Par défaut
    j'ai retravailler le code de cette manière

    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
     
     
     Public Function DateDiffAnneeMoisJour(Nbjour As Integer) As Integer()
     
            Dim dateFin As Date
            dateFin = DateTime.Now
     
            Dim dateDebut As Date
            dateDebut = Now.AddDays(-Nbjour)
     
            Dim year As Integer
            year = dateFin.year - dateDebut.year
     
            Dim month As Integer
            month = dateFin.month - dateDebut.month
     
            Dim day As Integer
            day = dateFin.day - dateDebut.day
     
     
            If month < 0 Then
                year = year - 1
                month = month + 12
            End If
     
            If day < 0 Then
                month = month - 1
                day = day + DateTime.DaysInMonth(dateDebut.year, dateDebut.month)
            End If
     
            Return {year, month, day}
        End Function
    mais lorsque je l'utilise dans une requète sous cette forme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test: DateDiffAnneeMoisJour([NbreJours])
    j'ai fonction non définie dans l'expression

  7. #7
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 527
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Oui, il faut reprendre la fonction de Kiki29 de la discussion et l'adapter à ton cas : nombre de jours jusqu'à aujourd'hui :

    Fonction à copier dans un module indépendant :

    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
    Function NbJoursAMJ(TotalJours As Long) as string
    Dim NbAns as long, NbMois as long, NbJours as long
    Dim Tmp As Date, sA As String, sM As String, sJ As String
    Dim dateFin As Date
    Dim dateDebut As Date
     
    dateFin = Date
    dateDebut = Date - TotalJours
     
        Tmp = DateSerial(Year(dateFin), Month(dateDebut), Day(dateDebut))
        NbAns = Year(dateFin) - Year(dateDebut) + (Tmp > dateFin)
        NbMois = Month(dateFin) - Month(dateDebut) - (12 * (Tmp > dateFin))
        NbJours = Day(dateFin) - Day(dateDebut)    ' [ Date Début, Date Fin ]
     
        If NbJours < 0 Then
            NbMois = NbMois - 1
            NbJours = Day(DateSerial(Year(dateFin), Month(dateFin), 0)) + NbJours
        End If
     
        If NbAns = 0 Then sA = "" Else sA = NbAns & "a "
        If NbMois = 0 Then sM = "" Else sM = NbMois & "m "
        If NbJours = 0 Then sJ = "" Else sJ = NbJours & "j"
     
    NbJoursAMJ = Trim$(sA & sM & sJ) ' Affiichage du résultat
     
    End function
    Utilisation sur un événement ou dans une autre procédure:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Resultat =NbJoursAMJ (31)
    Cdlt,
    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. [WD20] Code pour additionner des années
    Par bebert12 dans le forum WinDev
    Réponses: 13
    Dernier message: 06/01/2017, 14h02
  2. Convertir nombre de jours en année, mois et jours
    Par mehdiyou dans le forum VB.NET
    Réponses: 10
    Dernier message: 10/04/2014, 10h08
  3. affichage des infos par jour,par semaine et par mois
    Par king_soft dans le forum Requêtes
    Réponses: 4
    Dernier message: 29/12/2010, 11h08
  4. Réponses: 1
    Dernier message: 22/07/2008, 15h25
  5. Réponses: 10
    Dernier message: 01/03/2007, 13h38

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