XL 2013 Calcul age dans userforme

Domstras

XLDnaute Nouveau
Bonjour,

Pourrais-je avoir votre aide merci

J’ai un feuille de carnet d’adresse remplis par un userforme (Ajout_Contact) avec un textbox (TextBox6) date de naissance, je voudrais avoir l’âge qui s’affiche dans un textbox (TextBox7) âges et qu’il soit transféré en même temps que tous les autre a l’appuis du bouton ajouter (Bt_Ajouter)

J’ai cette formule mais je n’arrive pas à l’adapter dans user forme.

= DATEDIF(C4;aujourdhui(),”Y”)

MERCI A TOUS
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re,
J'ai juste répondu à votre question :
je voudrais avoir l’âge qui s’affiche dans un textbox (TextBox7)
Je rempli TextBox7 avec l'âge calculé à partir de la date de naissance en TextBox6.
Il vous suffit d'introduire ce code dans le code de votre userform.

Sans fichier test représentatif, difficile de faire mieux, ma boule de cristal est en panne. :)
 

vgendron

XLDnaute Barbatruc
et bah dans ce cas. la proposition de Sylvanu est plutot claire non??
ok.. il ne te tient pas la main pour te donner TOUT le code, mais puisque que tu as déjà écrit du vba.. tu devrais pouvoir t'en sortir....
dans l'évènement _afterupdate de ton textbox 6, tu inscrits la ligne de code de sylvanu.. et voila...

sinon, moi j'aime bien utiliser cette fonction qui retourne l'age
VB:
Function Age(d1 As Date, Optional d2) As String

If IsMissing(d2) Then d2 = Now()

Dim A&, m&, s&, j&
    If (d1 > 60) * (d1 <= d2) Then
        Do While DateSerial(Year(d1) + A + 1, Month(d1), Day(d1)) < d2: A = A + 1: Loop
        Do While DateSerial(Year(d1) + A, Month(d1) + m + 1, Day(d1)) < d2: m = m + 1: Loop
        Do While DateSerial(Year(d1) + A, Month(d1) + m, Day(d1) + (s + 1) * 7) < d2: s = s + 1: Loop
        Do While DateSerial(Year(d1) + A, Month(d1) + m, Day(d1) + s * 7 + j + 1) < d2: j = j + 1: Loop
        Age = IIf(A, A & " an" & IIf(A > 1, "s", "") & " ", "") & IIf(m, m & " mois ", "") & IIf(s, s & " semaine" & IIf(s > 1, "s", "") & " ", "") & IIf(j Or (A + m + j = 0), j & " jour" & IIf(j > 1, "s", ""), "")
    End If
End Function

et évidemment.. il faut aussi l'appeler dans l'évènement after update..
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

Votre tableau est bancal :
La partie du haut est un tableau structuré (ce qui est plutôt bien 👍 ). La partie basse (qui contient sans doute les ajouts via le Userform sans tenir compte du fait que la tableau est un TS) ne sont pas dans le tableau structuré.

C'est à mon avis un non sens de mettre l'âge en "dur". Cela signifie que le contact aura pour l'éternité toujours le même âge. Il vaut mieux mettre une formule dans le TS (tableau structuré) qui met l'âge automatiquement à jour.
Formule en J3 pour le TS :
VB:
=SI(ESTNUM([@[Date_Naissance]]);ANNEE(AUJOURDHUI())-ANNEE([@[Date_Naissance]])-1*(DATE(ANNEE(AUJOURDHUI());MOIS(I3);JOUR([@[Date_Naissance]]))>AUJOURDHUI());"")

Formule en J14 pour la plage ordinaire (qui ne devrait pas exister -> anomalie !) :
VB:
=SI(ESTNUM(I14);ANNEE(AUJOURDHUI())-ANNEE(I14)-1*(DATE(ANNEE(AUJOURDHUI());MOIS(I14);JOUR(I14))>AUJOURDHUI());"")
 

Pièces jointes

  • Domstras- Carnet Adresse- v1.xlsm
    37.5 KB · Affichages: 6

Discussions similaires

Statistiques des forums

Discussions
314 863
Messages
2 113 650
Membres
111 930
dernier inscrit
fab_met