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

Excel Discussion :

problème de formule de cumul de date dans datedif [XL-2016]


Sujet :

Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 159
    Points : 55
    Points
    55
    Par défaut problème de formule de cumul de date dans datedif
    Bonsoir à tous

    Après bien des recherches je bute sur un point pour le cumul des datedif

    dans le fichier joint pas de problème sur les deux formules une pour calculer la différence de date et l'autre pour cumuler ces différences de date.

    Sauf que dans cette dernière fonction je n'arrive pas a convertir les ans, mois et jours qui dépassent les 12 mois et 365 jours

    en effet j'ai en résultat final en bas de la feuille excel :

    19 ans 22 mois et 124 jours ( il faut prévoir que je peux avoir plus de 365 jours possile donc a transformer en mois et années)

    et dans cette dernière formule j'aimerais bie n sûr avoir la bonne conversion soit dans cet exemple 21 ans 4 mois et 24 jours quelque chose comme ça

    donc en resume convertir si nécessaire les jours en mois et (ou) années et les mois en année


    Cordialement


    Patrick
    Fichiers attachés Fichiers attachés

  2. #2
    Membre régulier
    Homme Profil pro
    Évaluation de la performance
    Inscrit en
    Avril 2018
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Canada

    Informations professionnelles :
    Activité : Évaluation de la performance
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2018
    Messages : 39
    Points : 82
    Points
    82
    Par défaut
    Bonjour Patgame

    Tu peux toujours essayer en inversant la somme et le datedif de ta formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    =DATEDIF(SOMME(B4:B11);SOMME(C4:C11);"Y")
    =DATEDIF(SOMME(B4:B11);SOMME(C4:C11);"ym")
    =DATEDIF(SOMME(B4:B11);SOMME(C4:C11);"md")
    Avec ton exemple tu obtiendra 21 ans deux mois et 0 jours
    Mais attention, Excel te limite car la somme de tes dates ne doit pas dépasser le 31 décembre 9999. Tu peux donc additionner environ 60 lignes actuellement mais ce nombre ira en diminuant avec le temps.

    Donc, si tu joue avec beaucoup de donnée, je te propose autre chose.
    Tu peux essayer la fonction fraction.annee qui te retournera la différence entre tes dates mais en fraction. Tu peux ensuite additionner ces nombres ce qui te donneras dans ton exemple : 21,16423736
    Ensuite, tu peux convertir le restant de l'entier en jours (0.16423736 * 365 = 59 jours). La conversion en mois est plus difficile à concevoir car ils n'ont pas tous la même durée dans mon calendrier

    Peux-être que d'autre membre te proposerons une meilleur solution, mais c'Est le bout de chemin que je peux faire. Bonne suite

    Cordialement

  3. #3
    Membre éprouvé
    Homme Profil pro
    utilisateur
    Inscrit en
    Janvier 2017
    Messages
    669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : utilisateur
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 669
    Points : 1 109
    Points
    1 109
    Par défaut
    Bonjour patgame,

    Je pense que le calcul le moins faux serait de compter les années, jusqu’à la date anniversaire d’entrée
    Puis de compter les mois supplémentaires de cette dernière année
    Et enfin les jours restants, ce qui donne :
    22 ans 8 mois 21 jours avec les formules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DATEDIF(B14;DATE(SI(MOIS(B14)>MOIS(C14);ANNEE(C14)-1;ANNEE(C14));MOIS(B14);JOUR(B14));"y")&" ans "&DATEDIF(DATE(SI(MOIS(B14)>MOIS(C14);ANNEE(C14)-1;ANNEE(C14));MOIS(B14);JOUR(B14));C14;"m")&" mois "&DATEDIF(DATE(ANNEE(C14);SI(JOUR(B14)>JOUR(C14);MOIS(C14)-1;MOIS(C14));JOUR(B14));C14;"d")&" jours"
    ou celle-ci qui donne exactement le même résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DATEDIF(B14;C14;"y")&" ans "&DATEDIF(B14;C14;"ym")&" mois "&DATEDIF(B14;C14;"md")&" jours"
    dans lesquelles B14=MIN(B4:B11) et C14=MAX(C4:C11)
    patgame-date contrat et experience professionnelle.xlsx
    LibreOffice 7.5.9.2.M1 (x64) FR-YT 05/12/23
    OS : Windows 11.0

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    1) je n'ai pas ouvert ton classeur
    2) Je vais me contenter de rappeler un principe fondamental : une durée temporelle ne peut s'exprimer qu'en unités temporelles. En sont exclues les notions calendaires (années et mois).
    Transformer en années, mois et jours une durée temporelle n'a dans ces conditions un sens possible que si l'on ajoute cette durée temporelle en jours à une date spécifiée.
    Tu sais extraire le nombre de jours NBJ entre deux dates. Ce nombre n'est pas une date, mais un numérique entier
    Les numériques s'additionnent simplement (NBJ1 + NBJ2 + ...... + NBJn) pour obtenir leur total NBJT
    Transformer NBJT en "années, mois et jours" n'a de sens possible (j'insiste) qu'en expression calendaire, par rapport à une date D alors spécifiée. Mécanisme :
    -- on ajoute NBJT à D -->> obtention d'une date D1
    -- on calcule l' "âge" à la date D1 par rapport à la date D (solution déjà donnée à plusieurs reprises sur ce forum).
    Tout ceci me parait (j'insiste encore) assez "cavalier".

    Mon intervention s'arrête là.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  5. #5
    Membre éprouvé
    Homme Profil pro
    utilisateur
    Inscrit en
    Janvier 2017
    Messages
    669
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : utilisateur
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2017
    Messages : 669
    Points : 1 109
    Points
    1 109
    Par défaut
    Bonjour patgame,

    cette autre formule incluant le premier (30/06/1995) et le dernier (23/03/2018) jour de la période donne 22 ans 8 mois 23 jours

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ENT((C14-B14)/365,25)&" ans "&ENT(((C14-B14)-ENT((C14-B14)/365,25)*365,25)/(365,25/12))&" mois "&SOMME((C14-B14)-ENT((C14-B14)/365,25)*365,25;-(ENT(((C14-B14)-ENT((C14-B14)/365,25)*365,25)/(365,25/12))*(365,25/12)))&" jours"
    LibreOffice 7.5.9.2.M1 (x64) FR-YT 05/12/23
    OS : Windows 11.0

  6. #6
    Expert éminent
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 262
    Points : 6 561
    Points
    6 561
    Par défaut
    Pourquoi ne pas faire simple et presque juste ?
    21 ans 4 mois et 23 jours
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    =ENT((SOMME(C4:C11)-SOMME(B4:B11))/365,25)& " ans"
    =ENT(((((SOMME(C4:C11)-SOMME(B4:B11))/365,25)-(ENT((SOMME(C4:C11)-SOMME(B4:B11))/365,25)))*30))& " mois"
    =ENT(((((((SOMME(C4:C11)-SOMME(B4:B11))/365,25)-(ENT((SOMME(C4:C11)-SOMME(B4:B11))/365,25)))*30))-(ENT(((((SOMME(C4:C11)-SOMME(B4:B11))/365,25)-(ENT((SOMME(C4:C11)-SOMME(B4:B11))/365,25)))*30))))*24)& " jours"
    "Le savoir est la seule matière qui s'accroit quand on la partage" (Socrate)
    UR - ESIROI - GPME/CG/DCG8
    QTH :21°19'18"S - 055°25'32"E
    Inutile de me contacter par MP
    Merci de cliquer sur si la réponse vous a permis de résoudre votre problème et n'oubliez pas de clôturer le fil en cliquant sur

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 159
    Points : 55
    Points
    55
    Par défaut merci a tous lers intervenants
    Merci à tous

    je pense que je vais prendre après examen la solution de Hyperion 13 ça semble correspondre aux périodes d'activités non contigües (avec des trous) que j'ai dans la feuille de calcul

    je vais examiner ça en détail

    merci pour le coup de main c'est ma femme qui va êrtre contente pour son boulot

    Amicalement

    Pat

    Mais j'ai un petit doute sur les jours ca me semble plus prés de 4 jours que de 23 non (j'ai vérifié sommairement pou rla somme de chaque période avec arbitrairement un mois de 30 jours
    si on a 124 jours ça donne 124/30=4 mois + 4 jours les mois et années ok ma remarque est elle justifiée ou quelque chose m'a échappé ?

  8. #8
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Hé bé !
    plus prompt à mettre un pouce rouge qu'à rechercher ce que j'ai invité à rechercher sur ce forum, hein, à savoir :
    on calcule l' "âge" à la date D1 par rapport à la date D (solution déjà donnée à plusieurs reprises sur ce forum).
    La voilà la formule -->>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =DATEDIF(A1;B1;"y") & " ans, " & DATEDIF(A1;B1;"ym") & " mois et " & DATEDIF(A1;B1;"md") & " jours"
    Et voilà ce qu'elle retourne avec 30/06/1995 en A1 et 23/03/2018 en B1 -->> 22 ans, 8 mois et 21 jours qui n'ont, je ne cesserai de le répéter, aucune utilisation comptable possible. Les même 8302 jours de différence entre les deux dates, appliqués à une autre date de départ, aboutiraient à un résultat différent. Et pour cause .

    EDIT (à l'intention du pouce rouge)
    Mettons 28/02/2000 en A1 et 21/11/2022 (soit 8302 jours de plus) en B1 --->> voila ce que deviendrait le résultat : 22 ans, 8 mois et 24 jours !

    Pas mal, hein , la différence, pour la même durée temporelle.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 159
    Points : 55
    Points
    55
    Par défaut pour unparia
    merci pour ta formule j'ai cherché un peu et voici mon résultat

    mon problème n'est pas de coller le résultat à une date loin de là

    Pour l'explication en fonction de l'expérience le barème salaire n'est pas le même dans la fonction, publique

    d'où la nécessité de calculer comme dans le tableau le nombre d'années, mois et jours pour les différentes périodes travaillées (pas forcément qui se suivent il peut y avoir des trous )
    et ensuite d'additionner ces temps travaillés des dites périodes

    j'ai donc repris le résultat du cumul 19 ans 22 mois et 124 jours auquel j'ai appliqué les formules suivantes pour me donner effectivement un calcul avec 360 jours pour l'an et 30 jours pour le mois c'est un peu arbitraire mais correspond à mon besoin, la précision au jour près n'est pas obligatoire la fonction publique procède par tranche

    les dites formules

    pour la partie année : "=(B30)+QUOTIENT((C30)+QUOTIENT((D30);30);12)"
    partie mois : : " =MOD((C30)+QUOTIENT((D30);30);12)"
    partie jours :"=MOD((D30);30)"

    ce qui me donne en résultat final : 21 ans 2 mois et 4 jours résultat mathématiquement correcte dans mon cas

    cordialement

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Si cela te convient, ma foi ...
    Car pour être "arbitraire", cela l'est sacrément et cela se voit d'autant plus que la durée est longue.
    Regarde: Reprenons l'exemple de nos 8302 jours d'écartn dont nous avons vu plus haut qu'ils aboutiraient, selon la date de départ, à 22 ans, 8 mois et 21 ou 22 ans, 8 mois et 24 jours.
    Voyons maintenant à quel résultat on aboutit en choisissant des années de 12 mois de 30 jours -->> 23 ans, 0 mois et 22 jours.
    Ma foi : du pain béni pour un salarié, si correspond à un versement de salaire ou de prime, et du pain noir pour un débiteur si correspond à des intérêts à verser (quatre mois de différence).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  11. #11
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    De bon matin, maintenant :
    Si je devine bien,
    1) tu as choisi de travailler sur la base d'années de 12 mois de 30 jours (années de 360 jours)
    2) tu as calculé une "durée par tranche" en utilisant la fonction DATEDIF ?
    Alors un petit test :
    en A1 : 30/06/1995
    en B1 : 23/03/2018
    en C1 ta formule avec datedif --->> 22 ans, 8 mois et 21 jours
    On est d'accord ?
    on transpose cet âge en nombre de jours en D1 en appliquant maintenant ta règle 360j/an --->> (22 * 360) + (8 * 30) + 21 ==>> 8181 jours.
    On est d'accord ?
    Voyons maintenant le nombre de jours que l'on aurait dû obtenir en appliquant directement sur les dates la règle des 360J/an :
    ==>> 8183 jours
    Gênant, n'est-ce pas ?
    Voilà le genre de mésaventure que l'on peut connaître lorsque l'on met dans un "même sac" ici des "âges" et là des durées temporelles.
    Ne jamais mettre un pied sur une barque et l'autre sur une autre barque.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 159
    Points : 55
    Points
    55
    Par défaut reponse
    je ne conteste pas ton explication sauf que je calcule en datedif les différentes périodes jusque là on est d'accord et j'additionne des différentes périodes pour arriver au résultat final de 19 ans 22 mois et 124 jours là aussi je pense que l'on peut être d'accord

    et c'est ce dernier résultat que je transforme pour arriver a 21 ans 2 mois et 4 jours

    je calcule une durée d'activité par un rattachement à un calendrier ou à une date de départ quelconque

    voilà ami ce résultat me convient car il est particuliers sans remettre en cause le bien fondé de ton cheminement intellectuel ; pet être même puis je en améliorer (à la marge) en considérant l'année non pas sur 360 jours mais 365.25 why not

    Mais merci pour cette petit leçon(sans malice aucune) que j'avais oublié de depuis belle lurette

    amitiés

    Pat

  13. #13
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bien
    Juste un dernier mot à ton attention et à celle de ton épouse, surtout si est retenu le principe d'une année de 12 mois de 30 jours :
    Lire très attentivement les textes arrêtés par son entité en matière de calcul de l'ancienneté, car ces calculs peuvent aboutir à un résultat très significativement différent, selon que l'on :
    1) calcule des "tranches" sur la base "12 mois de 30 jours", tranches que l'on additionne ensuite
    2) calcule le nombre de jours REELS de chaque tranche, que l'on additionne ensuite ces jours réels et que l'on applique à ce résultat le principe de "12 mois de 30 jours" pour en déduire l'ancienneté
    Ces textes doivent normalement préciser ce mode de calcul. Le contraire serait assez surprenant dans la mesure où il laisserait la porte ouverte à toutes les actions en justice en cas de contestation.
    Voilà. Je te laisse maintenant (je voulais simplement partir en ayant ma conscience tranquille).
    Amitiés
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

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

Discussions similaires

  1. [SP-2010] problème de formule de date dans colonne de type "valeur calculée"
    Par francis.richter dans le forum SharePoint
    Réponses: 3
    Dernier message: 15/06/2011, 16h49
  2. [oracle][delphi] Problème format de date dans une requete
    Par le_parrain dans le forum Bases de données
    Réponses: 1
    Dernier message: 21/07/2005, 10h12
  3. Problème de date dans fonction utlisateur
    Par lutin2003 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2005, 16h25
  4. Problème de date dans requête de màj imbriquée
    Par VirginieGE dans le forum Langage SQL
    Réponses: 11
    Dernier message: 20/07/2004, 15h34
  5. Problème de date dans MONTHS_BETWEEN
    Par ghostlord79 dans le forum Oracle
    Réponses: 10
    Dernier message: 07/04/2004, 11h21

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