Calcul âge VBA

nextrevolution

XLDnaute Occasionnel
Bonjour j'aimerais calculer l'âge à partir de la date de naissance en VBA.
J'ai pu trouver des codes sur le forum mais j'arrive pas a les appliquer.

Je vous joins mon fichier exemple avec le code dans l'userform.

Je vous remercie d'avance pour vos réponses
 

Pièces jointes

  • date de naissance.xls
    22 KB · Affichages: 622
  • date de naissance.xls
    22 KB · Affichages: 624
  • date de naissance.xls
    22 KB · Affichages: 655
Dernière édition:

RENAUDER

Nous a quitté
Repose en paix
Re : Calcul âge VBA

Bonjour,
J'ai pris une autre fonction.
Maintenant à toi d'adapter.
 

Pièces jointes

  • date de naissance.xls
    32.5 KB · Affichages: 1 032
  • date de naissance.xls
    32.5 KB · Affichages: 1 042
  • date de naissance.xls
    32.5 KB · Affichages: 1 208

nextrevolution

XLDnaute Occasionnel
Re : Calcul âge VBA

Merci à vous.

Renauder ta réponse est la mieux adapté car il suffit de remplir les chiffres sans mettre les parenthéses.

Par contre jetted ta réponse peux mettre utile car je pense par al suite que mon age devra apparaitre sur la feuille excel mais faudra qu'il soit à jour dès qu'on ouvre la page (je pense plustôt mettre une formule sur la page pour calculer l'âge).

vbacrumble, j'avais vu le fil de discussions, j'ai repris la formule de là mais j'ai pas réussi à l'adapter c'est pour ça.

Je voulais savoir si il existe une formule pour la feuille Excel qui fait un compteur avant le jour anniversaire de chaque personnes (je vais chercher sur le forum mais si jamais vous avez une idée)
 

nextrevolution

XLDnaute Occasionnel
Re : Calcul âge VBA

C'est bon j'ai trouvé, je la met si ça peut être utile à quelqu'un.

Code:
=DATEDIF(A1;aujourdui();"yd")

En A1 on met la date anniverssaire. Je rajoute les autres formules pour ceux qui cherche d'autre valeurs (nbs de mois, d'année ...)


Code:
En années =DATEDIF(A1;aujourdui();"y")  
En mois =DATEDIF(A1;aujourdui();"m")  
En jours =DATEDIF(A1;aujourdui();"d")  
différence en mois, une fois les années soustraites =DATEDIF(A1;aujourdui();"ym") 
différence en jours, une fois les années soustraites =DATEDIF(A1;aujourdui();"yd")  
différence en jours, une fois les années et les mois soustraits  =DATEDIF(A1;A2;"aujourdui()")
 

nextrevolution

XLDnaute Occasionnel
Re : Calcul âge VBA

Par contre au niveau de ton code RENAUDER, lorsque j'efface l'année de naissance il y a un bogue: erreur 13, incompabilité de type.

Code:
    Me.Label5.Caption = Calculage(CDate(Me.TextBox3.Text & "/" & Me.TextBox9.Text & "/" & Me.TextBox10.Text), Date)

Je sais pas comment le résoudre?
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : Calcul âge VBA

Bonjour à tous,

une macro de Ti pour calculer la différence entre 2 dates.

On peut bien sûr adapter en prenant pour 2ème paramètre la date du jour

Function StrDifDate$(ByVal Date1, ByVal Date2)
Dim DD1 As Date, DD2 As Date
Dim An&, Mois&, Jour&, Res$
On Error GoTo erreur
DD1 = Date1
DD2 = Date2
If Date1 <= Date2 Then
Date1 = DD1
Date2 = DD2
Else
Date1 = DD2
Date2 = DD1
End If
If Year(Date2) > Year(Date1) Then
An = (Year(Date2) - Year(Date1)) - IIf(Month(Date2) < Month(Date1), 1, _
IIf((Month(Date2) = Month(Date1)) And (Day(Date2) < Day(Date1)), 1, 0))
End If
Mois = Month(Date2) - Month(Date1) + 12 * (Year(Date2) - Year(Date1)) - _
IIf(Day(Date2) < Day(Date1), 1, 0) - (12 * An)
If Day(Date2) >= Day(Date1) Then
Jour = Day(Date2) - Day(Date1)
Else
Jour = DateSerial(Year(Date1), Month(Date1) + 1, 1) - Date1
Jour = Jour + Date2 - DateSerial(Year(Date2), Month(Date2), 1)
End If
If An > 0 Then Res = An & " an"
If An > 1 Then Res = Res & "s"
If Mois > 0 Then Res = Res & " " & Mois & " mois"
If Jour > 0 Then Res = Res & " " & Jour & " jour"
If Jour > 1 Then Res = Res & "s"
Res = Trim(Res)
If Res = "" Then Res = "0 jour"
StrDifDate = Res
Exit Function
erreur:
StrDifDate = ""
On Error GoTo 0
End Function

Sans oublier de télécharger le célèbre Dates et Heures de Celeda Monique &C@thy

Bizz

C@thy
 
Dernière édition:

nextrevolution

XLDnaute Occasionnel
Re : Calcul âge VBA

Merci pour vos réponses, je vais les adapter à mon code.


Est ce qu'il y a possibilité de bloquer la saisie que pour les chiffres. J'ai essayé deux codes différents, et j'aimerais faire un mélange des deux.

Code 1
Code:
'Private Sub TextBox3_Change()
'If Not TextBox3.Value = "" Or IsNumeric(TextBox3.Value) Then
'    MsgBox "Valeur numerique obligatoire"
'    TextBox3.SelStart = 1
'    TextBox3.SelLength = Len(TextBox3.Text)
 '   Exit Sub
'    End If

Code 2
Code:
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With TextBox3
    MsgBox "Valeur " & _
            Split("numerique obligatoire./correcte.", "/")(1 + ((Len(.Value) = 0) Or (Not IsNumeric(.Value)))), _
            vbInformation, _
            "VERIFICATION SAISIE"
End With

Le code 2 me permet lorsque la case est vide que le message n'apparait pas contraiment au code 1. Mais le code 1 permet la saisie de l'erreur lorsque je met une lettre.
Dans le code 2 je sais pas comment supprimer le message valeur correcte.


Je sais pas si j'ai bien expliquée mon problème, si jamais n'hésitez pas à me demander de réexpliquer. Merci d'avance
 
Dernière édition:

nextrevolution

XLDnaute Occasionnel
Re : Calcul âge VBA

Bonjour,

J'ai un problème sur mon application.

Mes dates de naissance sont enregistrées dans une base de donnée.
Le soucis est dès que mon jour de naissance est infèrieur à 13 il enregistre le jour et le mois inversé dans la date.
A partir de 13 il me l'enregistre correctement mais les calculs sur la feuille excel ne se réalise plus.

Je sais pas de quoi ça peux venir. Je joint le fichier pour mieux comprendre.

Cijoint.fr - Service gratuit de dépôt de fichiers
 

Statistiques des forums

Discussions
312 287
Messages
2 086 820
Membres
103 394
dernier inscrit
elhamdi