Age année et mois text box

Fermé
romanza Messages postés 249 Date d'inscription samedi 27 janvier 2007 Statut Membre Dernière intervention 10 avril 2023 - 12 mai 2015 à 13:12
romanza Messages postés 249 Date d'inscription samedi 27 janvier 2007 Statut Membre Dernière intervention 10 avril 2023 - 13 mai 2015 à 10:17
Bonjour,

Dans un formulaire je calcule l'âge d'un adulte à partir d'une textbox où est indiquée la date de naissance. J'utilise le code que j'ai récupéré tout fait :
Private Sub Néle_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If CDate(Néle.Text) Then Age.Text = Format(Date - CDate(Néle), "yy") & " ans "
End Sub


Cependant je souhaiterais rajouter les mois dans l'âge.
Pouvez-vous m'écrire le code correspondant.

Merci


3 réponses

f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
12 mai 2015 à 14:16
Bonjour,

fichier exemple : https://www.cjoint.com/c/EEmoFroqs7F trouve sur exceldownload
0
romanza Messages postés 249 Date d'inscription samedi 27 janvier 2007 Statut Membre Dernière intervention 10 avril 2023 2
12 mai 2015 à 14:46
Merci pour cette configuration très complète mais je souhaite rester avec une textbox où l'on indique la date de naissance sous format jj/mm/aaaa et la textbox dans laquelle apparaitra l'âge en année et en mois
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
12 mai 2015 à 15:51
Re,

Adaptez le code a votre utilisation!!!!
0
romanza Messages postés 249 Date d'inscription samedi 27 janvier 2007 Statut Membre Dernière intervention 10 avril 2023 2
12 mai 2015 à 16:19
Je maîtrise mal le vba.
Dans le code que je propose n'ya t'il pas une légère modification à apporter pour obtenir les mois?
0
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 1 709
Modifié par f894009 le 12/05/2015 à 16:39
Re,

Je maîtrise mal le vba. Ben oui, mais faut faire l'effort
un exemple:
Private Sub TextBox1_Change()
If IsDate(TextBox1) Then
TextBox2 = Calculage(CDate(TextBox1), Date)
End If
End Sub

Function Calculage(DateN As String, DateCS As String) As String
If IsDate(DateN) = False Then Exit Function
If IsDate(DateCS) = False Then Exit Function
Dim jN1, jC1, mN1, mC1, aN1, aC1 As Integer
Dim Jage, Mage, Aage As Integer
Dim Jdif As Integer
jN1 = Day(DateN)
jC1 = Day(DateCS)
mN1 = Month(DateN)
mC1 = Month(DateCS)
aN1 = Year(DateN)
aC1 = Year(DateCS)
If aC1 < aN1 Then Exit Function
If aC1 = aN1 And mC1 < mN1 Then Exit Function
If aC1 = aN1 And mC1 = mN1 And jC1 < jN1 Then Exit Function
If aC1 = aN1 And mC1 = mN1 And jC1 = jN1 Then
Mage = 0
Jage = 0
Aage = 0
GoTo caline1
End If
'
' Permet de savoir le nombre de jours du mois (fevrier inclus)
Dim sdt1 As Date
Dim sdt2 As Date
sdt1 = DateValue("1" & "/" & mN1 & "/" & aN1)
sdt2 = DateValue("1" & "/" & mN1 + 1 & "/" & aN1)
Jdif = DateDiff("d", sdt1, sdt2)
'
'
If jC1 < jN1 Then
If mC1 > mN1 Then
Mage = (mC1 - 1) - mN1
'A vérifier : Jage = (jC1 + Jdif) - jN1 +1
Aage = aC1 - aN1
GoTo caline1
End If

If mC1 = mN1 Then
Aage = aC1 - 1 - aN1
Mage = (mC1 + 11) - mN1
Jage = (jC1 + Jdif) - jN1
GoTo caline1
End If

If mC1 < mN1 Then
Mage = (mC1 + 11) - mN1
Jage = (jC1 + Jdif) - jN1
Aage = aC1 - 1 - aN1
GoTo caline1
End If

End If
If jC1 >= jN1 Then
If mC1 > mN1 Then
Jage = jC1 - jN1
Mage = mC1 - mN1
Aage = aC1 - aN1
GoTo caline1
End If

If mC1 = mN1 Then
Jage = jC1 - jN1
Mage = mC1 - mN1
Aage = aC1 - aN1
GoTo caline1
End If

If mC1 < mN1 Then
Jage = jC1 - jN1
Mage = (mC1 + 12) - mN1
Aage = aC1 - 1 - aN1
GoTo caline1
End If
End If
caline1:
Calculage = Aage & " ans et " & Mage & " mois" ' et " & Jage & " jours."
End Function
0
romanza Messages postés 249 Date d'inscription samedi 27 janvier 2007 Statut Membre Dernière intervention 10 avril 2023 2 > f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024
13 mai 2015 à 10:17
Bonjour,

merci à vous, j'ai pu adapter et cela fonctionne.
Bonne journée
0