XL 2016 comment déduire une durée sur une durée

ricou77

XLDnaute Nouveau
Bonjour,

Pour des attestations, je dois calculer une durée en nombre d'années, de mois et de jour.

Exemple :

J'ai une personne qui totalise 22 ans, 6 mois et 9 jours.

Je dois lui déduire 6 ans, 9 mois et 29 jours.

Le résultat devrait être du même format 12 ans 6 mois 5 jours

Existe t-il une formule excel qui me permettrait d'automatiser le calcul ?

Merci d'avance
 

job75

XLDnaute Barbatruc
Bonjour ricou77, JHA

Exprimée en années, mois, jours une durée n'a de sens que si l'on indique la période sur laquelle elle est calculée.

La période peut être une plage de dates quelconques, jointives ou disjointes.

Si l'on veut ne pas passer par cette contrainte il faut considérer que tous les mois ont 30 jours.

A+
 

nat54

XLDnaute Barbatruc
Bonjour ricou77, JHA

Exprimée en années, mois, jours une durée n'a de sens que si l'on indique la période sur laquelle elle est calculée.

La période peut être une plage de dates quelconques, jointives ou disjointes.

Si l'on veut ne pas passer par cette contrainte il faut considérer que tous les mois ont 30 jours.

A+
Bonjour,

Vu la problématique je pense qu'il s'agit de calcul d'ancienneté dans la fonction publique ... et je n'ai jamais vu qu'on arbitrait tous les mois à 30 jours.
En tout cas, la problématique m'intéresse donc je la suis/suivrais.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Si ce sont des durées indépendantes des dates qui sont visées, mettez une date en B2 et en C2 :
Code:
=DATE(ANNEE(B2)+400;MOIS(B2);JOUR(B2))
et observez que les formules suivantes donnent toujours le même résultat :
En D2 :
Code:
=C2-B2
En E2 :
Code:
=D2/400
En F2 :
Code:
=E2/12
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Pour calculer les années et les mois, ça doit être faisable.
Mais pour calculer les jours sans avoir les dates, je pense que c'est impossible, sauf à considérer que le mois a toujours une durée de 30 jours...

J'ai ça :
Capture_duree-calendaire.png
 

Dranreb

XLDnaute Barbatruc
J'ai cette fonction qui affiche un texte décrivant une durée en jours avec un précision relative à l'ordre de grandeur :
VB:
Function DuréeEnClair(ByVal DuRest As Double, Optional ByVal OPé As Long = -1) As String
   Dim U As Long, DuUnit As Double, NbUnit As Long, Trad As String, Compter As Boolean, K As Long
   For U = 1 To 6
      If DuRest = 0 Then Exit For
      If OPé > 0 And U > OPé Then Exit For
      DuUnit = Choose(U, 365.2425, 30.436875, 7, 1, 1 / 24, 1 / 1440)
      NbUnit = Int(DuRest / DuUnit)
      If NbUnit > 0 Then
         If OPé <= 0 Then Compter = True
         If Trad <> "" Then
            If DuréeEnClair <> "" Then
               DuréeEnClair = DuréeEnClair & ", " & Trad
            Else
               DuréeEnClair = Trad: End If
            End If
         Trad = NbUnit & " " & Choose(U, "an", "mois", "sem.", "jour", "heure", "min")
         If NbUnit * Choose(U, 1, 0, 0, 1, 1, 0) > 1 Then Trad = Trad & "s"
         DuRest = DuRest - DuUnit * NbUnit: End If
      If Compter Then K = K - 1: If K < OPé Then Exit For
      Next U
   If Trad <> "" Then
      If DuréeEnClair <> "" Then
         DuréeEnClair = DuréeEnClair & " et " & Trad
      Else
         DuréeEnClair = Trad: End If
      End If
   If OPé > 0 And DuréeEnClair = "" Then DuréeEnClair = "Moins d'1 " _
      & Choose(OPé, "an", "mois", "sem.", "jour", "heure", "min")
   End Function
 

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 150
Membres
112 670
dernier inscrit
Flow87