Fonction AGE avec variable dans TextBox en VBA
Le
Esox38
Bonsoir,
Depuis une semaine j'essaye de faire fonctionner la fonction suivante
trouver dans un forum dans une UserForm avec 3 Textbox et un bouton pour
lancer la fonction
Function AGE(DateDebut As Date, DateFin As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(DateDebut): D2 = Int(DateFin)
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
Macro sur le bouton :
Public DateDebut As Date, DateFin As Date
Private Sub CommandButton32_Click()
DateDebut = TextBox186.Value
DateFin = TextBox187.Value
TextBox190.Value = AGE(DateDebut, DateFin)
End sub
Et là j'ai un message d'erreur sur la ligne : Type incompatible (erreur 13)
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y""")
J'ai bien cherché à modifier les propriétés de mes variables mais rien à
faire.
Si vous avez une explication et/ou une solution merci d'avance.
Cordialement
--
Esox38
Depuis une semaine j'essaye de faire fonctionner la fonction suivante
trouver dans un forum dans une UserForm avec 3 Textbox et un bouton pour
lancer la fonction
Function AGE(DateDebut As Date, DateFin As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(DateDebut): D2 = Int(DateFin)
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
Macro sur le bouton :
Public DateDebut As Date, DateFin As Date
Private Sub CommandButton32_Click()
DateDebut = TextBox186.Value
DateFin = TextBox187.Value
TextBox190.Value = AGE(DateDebut, DateFin)
End sub
Et là j'ai un message d'erreur sur la ligne : Type incompatible (erreur 13)
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y""")
J'ai bien cherché à modifier les propriétés de mes variables mais rien à
faire.
Si vous avez une explication et/ou une solution merci d'avance.
Cordialement
--
Esox38

Poser une question


D1 et D2 sont évalués comme étant des références de cellules
remplacer D1 et D2 respectivement par Ddeb et Dfin
--
--
@+
;o)))
Private Sub CommandButton32_Click()
Dim Déb As Date
Dim Fin As Date
If IsDate(TextBox186.Value) And _
IsDate(TextBox187.Value) Then
DateDebut = CDate(TextBox186.Value)
Fin = CDate(TextBox187.Value)
Déb = CDate(TextBox186.Value)
TextBox190.Value = AGE(Déb, Fin)
Else
MsgBox "Un ou / et les 2 textbox contiennent des " & _
"informations qui ne sont pas des dates pour excel."
End If
End Sub
'-----------------------------------------------
' Proposé par AV et LL
Function AGE(Déb As Date, Fin As Date) As String
AGE = Evaluate("trim(if(" & Fin * 1 & "-" & _
Déb * 1 & ",text(datedif(" & Déb * 1 & "," & _
Fin * 1 & ",""y""),""[>1]0"""" ans"""";" & _
"[>]""""1 an"""";"")&text(datedif(" & _
Déb * 1 & "," & Fin * 1 & ",""ym"")," & _
"""[>] 0"""" mois """"; "")&text(datedif(" & _
Déb * 1 & "," & Fin * 1 & ",""md"")," & _
"""[>1]0"""" jours"""";[>]""""1 jour"""";"")," & _
"""0 jour""))")
End Function
'---------------------------------------
"Esox38"
Bonsoir,
Depuis une semaine j'essaye de faire fonctionner la fonction suivante
trouver dans un forum dans une UserForm avec 3 Textbox et un bouton pour
lancer la fonction
Function AGE(DateDebut As Date, DateFin As Date) As String
Dim Elt As Long, D1 As Long, D2 As Long
D1 = Int(DateDebut): D2 = Int(DateFin)
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
Macro sur le bouton :
Public DateDebut As Date, DateFin As Date
Private Sub CommandButton32_Click()
DateDebut = TextBox186.Value
DateFin = TextBox187.Value
TextBox190.Value = AGE(DateDebut, DateFin)
End sub
Et là j'ai un message d'erreur sur la ligne : Type incompatible (erreur 13)
Elt = Evaluate("DATEDIF(" & D1 & "," & D2 & ",""y""")
J'ai bien cherché à modifier les propriétés de mes variables mais rien à
faire.
Si vous avez une explication et/ou une solution merci d'avance.
Cordialement
--
Esox38
Merci pour cette réponse rapide, cela fonctionne parfaitement, merci pour la
fonction AGE de AV et LL.
Autant j'arrive à comprendre ta macro, par contre pour la fonction dur dur...
Cordialement
--
Esox38
"michdenis" a écrit :
aider a comprendre comment il fait pour résoudre une formule :
Si tu veux tenter l'expérience :
En A1 , tu entres la date de naissance
En B1 , la fonction =aujourdhui()
J'ai nommé (insertion / nom ) A1 -> Deb
B1 -> Fin
En D5, j'ai inséré la formule dans la cellule :
=SUPPRESPACE(SI(Deb-fin;TEXTE(DATEDIF(Deb;fin;"y");"[>1]0"" ans"";[>]""1
an"";")&TEXTE(DATEDIF(Deb;fin;"ym");"[>] 0"" mois "";
")&TEXTE(DATEDIF(Deb;fin;"md");"[>1]0"" jours"";[>]""1 jour"";");"0 jour"))
Et maintenant dans le module feuille où est ta cellule, tu insères la
procédure suivante :
'------------------------------
Sub test()
Range("D1").Activate
Application.Dialogs(xlDialogEvaluateFormula).Show
End Sub
'------------------------------
à l'aide du bouton "Evaluate", excel transforme le texte souligné
par la résolution qu'il a trouvé ....
"Esox38"
Bonjour michdenis
Merci pour cette réponse rapide, cela fonctionne parfaitement, merci pour la
fonction AGE de AV et LL.
Autant j'arrive à comprendre ta macro, par contre pour la fonction dur
dur...
Cordialement
--
Esox38
"michdenis" a écrit :
Curieux, je vais essayer.
Merci!
--
Esox38
"michdenis" a écrit :