GNT sans publicité, site mobile, fonctionnalitées exclusives...

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

Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Modeste
Le #16391401
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)))
michdenis
Le #16391741
'---------------------------------------
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
Esox38
Le #16393381
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"
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




michdenis
Le #16394431
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"
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" 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




Esox38
Le #16396741
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"
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" > 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
>
>




Publicité
Suivre les réponses
Poster une réponse
Anonyme