Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Bonjour Mesdames, Messieurs

Pourquoi ne pas vouloir utiliser DateDiff ?

Ci-dessous exemple tiré de l'aide VBA
Code:
Dim TheDate As Date    ' Déclare les variables.
Dim Msg
TheDate = InputBox("Entrez une date")
Msg = "Jours à compter d'aujourd'hui: " & DateDiff("j", Now, TheDate)
MsgBox Msg
 
Re : Formule sans datedif

Bonjour.
je le ferais comme ça peut être:
VB:
Dim DateFin As Date, DateDébut As Date, DifJ As Long, DifM As Long, DifA As Long
DateFin = TextBox1.Text
DateDébut = TextBox2.Text
DifJ = DateFin - DateDébut
DifM = Int(DifJ / 30.436875): DifJ = DifJ - Int(DifM * 30.436875)
DifA = DifM \ 12: DifM = DifM - DifA * 12
Du moins c'est comme ça que j'aurais fais sans DateDiff.
je ne savais même pas que cette fonction existait en VB
Cordialement
 
Dernière édition:
Re : Formule sans datedif

la fonction DateDiff est paramétrable

Voir l'aide VBA à ce sujet.
Post Scriptum: Bonjour Dranreb
 
Re : Formule sans datedif

Bonjour TempusFugit (un pseudo prédestiné à traiter cette question on dirait)
La fin de l'aide:
Lors de la comparaison des dates 31 décembre et 1er janvier de l'année suivante, DateDiff avec la valeur Année ("yyyy") renvoie 1, même si la différence est seulement d'un jour.
...me donne à penser que quoi qu'on lui demande comme intervalle, cette fonction ne conviendra pas, même pas pour renvoyer une base pour un calcul complémentaire.
 
Re : Formule sans datedif

Bonjour,

Voir PJ

Pour accéder à à Datedif() en VBA, utiliser Evaluate()

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


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



Code:
Private Sub CommandButton1_Click()
  Me.TextBox3 = Evaluate("datedif(" & "datevalue(""" & cvDate(Me.TextBox1) & """)" & ",datevalue(""" & cvDate(Me.TextBox2) & """),""y"")")
  Me.TextBox4 = Evaluate("datedif(" & "datevalue(""" & cvDate(Me.TextBox1) & """)" & ",datevalue(""" & cvDate(Me.TextBox2) & """),""ym"")")
  Me.TextBox5 = Evaluate("datedif(" & "datevalue(""" & cvDate(Me.TextBox1) & """)" & ",datevalue(""" & cvDate(Me.TextBox2) & """),""md"")")
End Sub

Function cvDate(d)
 p1 = InStr(d, "/")
 P2 = InStr(p1 + 1, d, "/")
 cvDate = Mid(d, p1 + 1, P2 - p1) & Left(d, p1) & Mid(d, P2 + 1)
End Function

JB
 

Pièces jointes

Dernière édition:
Re : Formule sans datedif

Si, on a pas le droit de savoir pourquoi vous ajoutez 2,5 jour à la différence, ni pourquoi la durée moyenne en jour de votre année n'est pas de 365,2425...

Excusé moi c'est pas 2.5 jour mais 2 jours

exemple du 01/01/2011 au 31/12/2011
nban =ENT((A2-B2+2)/365.25) = 1 an
nbm =ENT(MOD(A2-B2+2;365.25)/(365.25/12)) = 0 mois
nbj =ENT(MOD((A2-B2+2);(365.25/12))) = 0 jour
 
Re : Formule sans datedif

Bonjour a tous

Ton calcul est, bien sur, curieux

J'ai néanmoins essayé de le respecter

Teste

Code:
Sub test()
x = CDate(Range("A1"))
y = CDate(Range("B1"))
an = Int((y - x + 2.5) / 365.25)
mois = Int((y - x + 2.5 - an * 365.25) / (365.25 / 12))
jours = Int((y - x + 2.5) - an * 365.25 - mois * (365.25 / 12))
End Sub

Edit : Remplace 2.5 par 2
 
- 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
672
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…