Re-,
Effectivement, autant la fonction "DateDif", dans un onglet est très fiable, autant en VBA, elle est très capricieuse...
Comme je ne peux pas initialiser ton useform (je ne peux pas charger un objet quelconque...), regarde le fichier joint
(Dans la cellule E1, la formule pour un onglet...)
Le code que j'utilise :
Private Sub UserForm_Initialize()
Dim Date1, Date2
Me.TextBox1 = CDate(Sheets("Feuil1").Range("B2").Value)
Me.TextBox2 = CDate(Sheets("Feuil1").Range("B1").Value)
Date1 = Format(Me.TextBox1, "mm/dd/yyyy"): Date2 = Format(Me.TextBox2, "mm/dd/yyyy")
Me.TextBox3 = Evaluate("DATEDIF(" & """" & Date1 & """" & "," & """" & Date2 & """" & "," & """Y""" & ")")
End Sub
Bon courage
Et pour donner également un âge, avec années, mois et jours :
[Selon un code d'Alain Vallon]
Private Sub UserForm_Initialize()
Dim Date1, Date2
Dim An, Mois, Jour
Me.TextBox1 = CDate(Sheets("Feuil1").Range("B2").Value)
Me.TextBox2 = CDate(Sheets("Feuil1").Range("B1").Value)
Date1 = Format(Me.TextBox1, "mm/dd/yyyy"): Date2 = Format(Me.TextBox2, "mm/dd/yyyy")
An = Evaluate("DATEDIF(" & """" & Date1 & """" & "," & """" & Date2 & """" & "," & """Y""" & ")")
Mois = Evaluate("DATEDIF(" & """" & Date1 & """" & "," & """" & Date2 & """" & "," & """YM""" & ")")
Jour = Evaluate("DATEDIF(" & """" & Date1 & """" & "," & """" & Date2 & """" & "," & """MD""" & ")")
plurAn = Evaluate("if(" & An & ">1" & "," & """ ans""" & "," & """ an""" & ")")
plurJour = Evaluate("if(" & Jour & ">1" & "," & """ jours""" & "," & """ jour""" & ")")
Me.TextBox3 = An & plurAn & " " & Mois & " mois" & " " & Jour & plurJour
End Sub
Fichier :