Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Fonction AGE avec variable dans TextBox en VBA

5 réponses
Avatar
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

5 réponses

Avatar
Modeste
Bonsour® Esox38 avec ferveur ;o))) vous nous disiez :

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.




D1 et D2 sont évalués comme étant des références de cellules
remplacer D1 et D2 respectivement par Ddeb et Dfin




--
--
@+
;o)))
Avatar
michdenis
'---------------------------------------
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" a écrit dans le message de news:

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
Avatar
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 :

'---------------------------------------
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" a écrit dans le message de news:

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




Avatar
michdenis
Si cela peut t'aider, il y a une façon de demander à excel de nous
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" a écrit dans le message de news:

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 :

'---------------------------------------
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" a écrit dans le message de
news:

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




Avatar
Esox38
Bonsoir,

Curieux, je vais essayer.

Merci!

--
Esox38


"michdenis" a écrit :

Si cela peut t'aider, il y a une façon de demander à excel de nous
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" a écrit dans le message de news:

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 :

> '---------------------------------------
> 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" a écrit dans le message de
> news:
>
> 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
>
>