• Initiateur de la discussion Initiateur de la discussion In Vino Veritas
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

I

In Vino Veritas

Guest
voilà mon souci :

Dans un userform, je veux rentrer dans un textbox1 une date, un textbox2 avec une autre date ( du jour par exemple).
Dans des labels 1, 2, 3 je voudrais qu'il s'affiche la différence entre ces deux dates. bref, je voudrais un truc qui me fasse un calcul d'age ou d'ancienneté en jours, mois, années.
Je suis allé fouiner sur les excellents sites des spécialistes en date du forum, mais il doit y avoir un truc simple et je ne m'en sors pas....

merci de votre aide
 
Bonjour,

Pas de userform ni textbox1 (ni 2, d'ailleurs) ni labels.
Seulement un condensé sur les calculs d'âge ou d'ancienneté.
Au choix : fonction DATEDIF, fonction DATE(ANNEE();MOIS();JOUR())
Années, mois et jours séparés avec la fonction JOUR360()
 

Pièces jointes

Dernière modification par un modérateur:
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
602
Réponses
9
Affichages
632
Réponses
3
Affichages
657
Retour