Bonjour
La fonction suivante est destinée à calculer l'age d'une personne en fonction de sa date de naissance insérée dans une textbox, une seconde textbox est destinée à afficher l'age de la personne.
La fonction fonctionne bien à l'exception de la modification du caption de la textbox destinée à recevoir l'age de la personne, pouvez vous me dire ce qui ne va pas svp ?
La date de naissance est dans la textbox nommée T3 et le résultat attendu est dans la textbox T4
Code : Sélectionner tout - Visualiser dans une fenêtre à part calcul_age Me.T3, Me.T4
impossible de changer le caption de textbox T4 par le biais de code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Private Sub calcul_age(ByRef textbox_date_naissance As msforms.TextBox, ByRef textbox_resultat_age As msforms.TextBox) Dim dateEntrée As Date Dim age, NbAnnées, NbMois, nbJours As Integer If textbox_date_naissance.Value = "" Then Exit Sub dateEntrée = textbox_date_naissance.Value NbAnnées = (Year(Now()) - Year(dateEntrée)) NbMois = (Month(Now()) - Month(dateEntrée)) nbJours = (Day(Now()) - Day(dateEntrée)) If NbAnnées > 0 And NbMois > 0 Then age = NbAnnées ElseIf NbAnnées > 0 And NbMois = 0 And nbJours >= 0 Then age = NbAnnées Else age = NbMois End If textbox_resultat_age.Value = age If NbAnnées < 1 Then textbox_resultat_age.Caption = "Mois" Else textbox_resultat_age.Caption = "An(s)" End If End Sub
Si je modifie la fonction sans utiliser de paramètres, en spécifiant directement le nom des textboxes accueillant la date de naissance et le résultat, le caption fonctionne bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 Private Sub calcul_age() Dim dateEntrée As Date Dim age, NbAnnées, NbMois, nbJours As Integer If T3.Value = "" Then Exit Sub dateEntrée = T3.Value NbAnnées = (Year(Now()) - Year(dateEntrée)) NbMois = (Month(Now()) - Month(dateEntrée)) nbJours = (Day(Now()) - Day(dateEntrée)) If NbAnnées > 0 And NbMois > 0 Then age = NbAnnées ElseIf NbAnnées > 0 And NbMois = 0 And nbJours >= 0 Then age = NbAnnées Else age = NbMois End If T4.Value = age If NbAnnées < 1 Then L4.Caption = "Mois" Else L4.Caption = "An(s)" End If End Sub
Partager