Formule sans datedif

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

dhiouf

XLDnaute Occasionnel
Bonjour à toute et à tous,

J’ai 3 formules pour calculer le nombre en années, mois et jours exacte entre deux dates. Mon problème je n’arrive pas à les rendre en code VBA.

Formule pour calculer les années : B1=ENT((datefin – datedébut +2)/365.25)

Code VBA :
Dim datefin As Date, datedébut As Date
datefin = textbox1.text
datedébut = textbox2.text
textbox3.text =INT((datefin – datedébut + 2)/365.25) ‘çà marche

Formule différence en mois, une fois les années soustraites :
B2=ENT(MOD(datefin – datedébut+2;365.25)/(365.25/12))

Code VBA : ?

Formule différence en jours, une fois les années et les mois soustraits :
B3=ENT(MOD((datefin-datedébut+2);(365.25/12)))

Code VBA : ?

Avez-vous une idée
Merci d’avance.
 
Dernière édition:
Re : Formule sans datedif

moyenne en jour (365 + 365 + 365 + année bisextile de 366)/4 = 365.25
en fait l'année bisextile c'est tous les 4 ans, sauf tous les 100 ans, mais quand même tous les 400 ans.
Cela rend compte d'une durée de l'année de 365.2425. La réalité quand à la durée réelle de l'anné est une autre paire de manche: ça dépend ce qu'on appelle exactement une année, mais ça c'est de l'astromomie de haut niveau.
 
Re : Formule sans datedif

-DateDif() gère les années bissextiles. Elle donne un résultat exact.

-Ce code n'est qu'une approximation. Il donne 1 an et 2 jours alors qu'il devrait donner 1 an et 0 jours

x = #1/1/2000#
y = #1/1/2001#
an = Int((y - x + 2) / 365.25)
mois = Int((y - x + 2 - an * 365.25) / (365.25 / 12))
jours = Int((y - x + 2) - an * 365.25 - mois * (365.25 / 12))

JB
 
Re : Formule sans datedif

-DateDif() gère les années bissextiles. Elle donne un résultat exact.

-Ce code n'est qu'une approximation. Il donne 1 an et 2 jours alors qu'il devrait donner 1 an et 0 jours

x = #1/1/2000#
y = #1/1/2001#
an = Int((y - x + 2) / 365.25)
mois = Int((y - x + 2 - an * 365.25) / (365.25 / 12))
jours = Int((y - x + 2) - an * 365.25 - mois * (365.25 / 12))

JB

Bonjour à tous,

Pour calculer l'âge d'une personne Datedif() donne un résultat exact, mais pour calculer la durée du travail d'année, mois, jour calendaire Datedif() donne un résultat moins d'un jour à 2 jours.
exemple1: soit un homme a commencer son travail du 1/1/2011 au 15/04/2011 (3 mois calendaire et 15 jours)
résultat avec datedif() 3 mois 14 jours.
exemple2: pour établir un relevé de carrière pour un salarié du 27/11/1993 au 26/09/2011(17 ans 10 mois 0 jour)
résultat avec datedif() 17 ans 9 mois 30 jours.
 
Dernière édition:
Re : Formule sans datedif

Re

A mon sens il ne s'agit que de s'entendre sur le fait que le dernier jour doit etre inclus ou non
Pour ton temps de travail ou ton relevé de carriere la solution semble etre de changer une des 2 bornes:
soit la veille du debut
soit le lendemain de la fin

J'ai par ailleurs exhumé une vieille fonction (probablement ecrite sous Excel97) donnant l'age en fonction de la date de naissance et d'une date determinée
Tu pourrais l'utiliser en lieu et place de Datediff
 

Pièces jointes

Re : Formule sans datedif

Bonjour,

Pour accéder à Datedif() en VBA, il suffit d'utiliser Evaluate()

age= [datedif(A1,today(),"y")]

ou

age = Evaluate("datedif(A1,today(),""y"")")


age = [datedif(A1,today(),"y")] & "ans " & [datedif(A1,today(),"ym")] & "Mois " & [datedif(A1,today(),"md")] & "jours"



JB
 
Dernière édition:
Re : Formule sans datedif

Re

Juste pour avoir le dernier mot (lol !!!)

Excel 2010 possede la fonction Datediff dont l'exemple est cité ci-dessous

Code:
DateDiff, fonction, exemple
 
Cet exemple utilise la fonction DateDiff pour afficher le nombre de jours entre une date donnée et la date d'aujourd'hui.
Dim TheDate As Date    ' Déclare les variables.Dim 
MsgTheDate = InputBox("Entrez une date")
Msg = "Jours à compter d'aujourd'hui: " & DateDiff("j",Now,TheDate)
MsgBox Msg
 
Dernière édition:
Re : Formule sans datedif

Re

A mon sens il ne s'agit que de s'entendre sur le fait que le dernier jour doit etre inclus ou non
Pour ton temps de travail ou ton relevé de carriere la solution semble etre de changer une des 2 bornes:
soit la veille du debut
soit le lendemain de la fin

J'ai par ailleurs exhumé une vieille fonction (probablement ecrite sous Excel97) donnant l'age en fonction de la date de naissance et d'une date determinée
Tu pourrais l'utiliser en lieu et place de Datediff

Bonjour,

Merci beaucoup pour le fichier joint, mais une petite erreur au niveau de la colonne temps de travail (du 27/mois/année au 31/12/année) donne nba et nbm et 5 jours par contre c'est nba et nbm et 4 jours.
exemple du (27/11/1993 au 31/12/2011) donne 18 ans 1 mois 5 jours mais la logique c'est 18 ans 1 mois 4 jours.
 
Re : Formule sans datedif

Re
Peux-tu etre plus explicite a propos de 'la logique' ???
Pour moi:
Un bebe nait le 27/11/1993 a 8h00 du matin
au meme moment son ouvrier de pere se met au travail
le 27/11/1994 a 8h00 le bebe aura un an et son pere aura aussi travaillé 1an
Si son pere termine sa journée il aura travaillé 1an et 1 jour
On peut choisir cette option pour le calcul de la retraite
Dans ce cas il faut bien admettre que pour le calcul de la retraite il faut considerer le lendemain du jour d'arret pour le calcul
Par consequent du 27/11/1993 au 31/12/2011 il faudra calculer du 27/11/1993 au 01/01/2012 ce qui donne bien 18 ans 1 mois et 5 jours
Et dis-nous:
Qu'en est-il de tes fameuses formules exposées au debut de ce fil ???
 
Re : Formule sans datedif

Re
Peux-tu etre plus explicite a propos de 'la logique' ???
Pour moi:
Un bebe nait le 27/11/1993 a 8h00 du matin
au meme moment son ouvrier de pere se met au travail
le 27/11/1994 a 8h00 le bebe aura un an et son pere aura aussi travaillé 1an
Si son pere termine sa journée il aura travaillé 1an et 1 jour
On peut choisir cette option pour le calcul de la retraite
Dans ce cas il faut bien admettre que pour le calcul de la retraite il faut considerer le lendemain du jour d'arret pour le calcul
Par consequent du 27/11/1993 au 31/12/2011 il faudra calculer du 27/11/1993 au 01/01/2012 ce qui donne bien 18 ans 1 mois et 5 jours
Et dis-nous:
Qu'en est-il de tes fameuses formules exposées au debut de ce fil ???

OK j'ai bien compris, Merci beaucoup pour tes réponses et mille merci pour la fonction dans ton fichier joint très excellente.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Résolu(e)
Microsoft 365 DateDif()
Réponses
5
Affichages
395
  • Résolu(e)
Microsoft 365 DATEDIF
Réponses
11
Affichages
419
Réponses
10
Affichages
142
Réponses
23
Affichages
670
Retour