Bonsoir,
tiens j'allais m'y mettre, mais tu as été plus rapide que moi Gérard
Moi de mon coté, j'essayais d'appliquer justement la function de Laurent Longre en VBA trouvée sur la même page dont Monique parle dans ses formules.
Function AGE(Date1 As Date, Date2 As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(Date1): D2 = Int(Date2)
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y""")
AGE = Elt & IIf(Elt > 1, " ans, ", " an,") & _
Evaluate("DATEDIF(" & D1 & "," & D2 & ",""ym""") & " mois, "
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""md""")
AGE = AGE & Elt & IIf(Elt > 1, " jours", " jour")
End Function
Mais au stade ou j'en étais, c'était le split sur trois Functions (becoz 3 Labels) :
Function AGEY(Date1 As Date, Date2 As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(Date1): D2 = Int(Date2)
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y""")
AGEY = Elt & IIf(Elt > 1, " ans ", " an")
End Function
Function AGEM(Date1 As Date, Date2 As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(Date1): D2 = Int(Date2)
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""ym""")
AGEM = Elt & " Mois "
End Function
Function AGEJ(Date1 As Date, Date2 As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(Date1): D2 = Int(Date2)
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""md""")
AGEJ = Elt & IIf(Elt > 1, " Jours ", " Jour")
End Function
J'avais une erreur d'incompatibilité de type pour retourner ces trois functions dans des label... (prise de tête !! et vu que tu es arrivé à la rescousse je laisse béton, j'ai un autre truc à finir, lol)
Par contre j'avais fait un test pour la textbox de saisie de date en utilisant
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean) ' (de Frédérique Sigonneau)
Dim ArrD
If TextBox2 = "" Then Exit Sub
ArrD = Split(TextBox2.Text, _
Application.International(xlDateSeparator))
If UBound(ArrD) <> 2 Then GoTo Fin
If Not IsDate(TextBox2.Value) Then GoTo Fin
LesCalculs
Exit Sub
Fin:
TextBox2 = ""
TextBox2.SetFocus
MsgBox "date arrivée non valide"
End Sub
Qui éviterait le plantage si on rentre n'importe quoi à la place de la Date....
Par contre si je tape 19/01/2003 j'ai un retour "-1 An(s), 11 Mois, 30 Jour(s)" ce serait pas mieux de dire "basta!!! la date doit être inférieure !!" lol
mais beau travail quand même
@+Thierry