VBA datedif

Bonjour,

Je cherche a calculer l'age en année et en mois entre deux dates.

Le résultat sur l'année est correct mais pas sur les mois.

Besoin de votre aide, voici ma formule :

Private Sub TextBox7_Change()

Dim DateDebut As Date

Dim DateFin As Date

thisMonth = Month(thisDate)

On Error Resume Next

DateDebut = CDate(TextBox7.Value)

If Err.Number <> 0 Then DateDebut = (TextBox7.Value)

Err.Number = 0

DateFin = Sheets("Feuil1").Range("E3")

TextBox8 = DateDiff("yyyy", DateDebut, DateFin, 2, 2) & " an(s) " & DateDiff("m", DateDebut, DateFin, 2, 2) & " mois "

End Sub

Merci

Bonjour,

Testes avec ceci :

Private Sub TextBox7_Change()

    Dim DateDebut As Date
    Dim DateFin As Date
    Dim Annee As Long
    Dim Mois As Long

    'thisMonth = Month(thisDate)

    On Error Resume Next
    DateDebut = CDate(TextBox7.Value)

    If Err.Number <> 0 Then DateDebut = (TextBox7.Value)

    Err.Number = 0
    DateFin = Sheets("Feuil1").Range("E3")

    Annee = Application.Evaluate("DATEDIF(" & DateDebut & "," & DateFin & ",""Y"")")
    Mois = Application.Evaluate("DATEDIF(" & DateDebut & "," & DateFin & ",""YM"")")

    TextBox8.Text = Annee & "an(s) et " & Mois & " mois"

End Sub

Bonjour,

Il te manque juste un modulo 12 ...

DateDiff("yyyy", DateDebut, DateFin, 2, 2) & " an(s) " & DateDiff("m", DateDebut, DateFin, 2, 2) Mod 12 & " mois "

En espèrant que cela t'aide ...

Je viens de mettre ta réponse le résultat est 0 an et 0 mois.

Voici la formule, peut être que j'ai mal fais quelque part

Private Sub TextBox7_Change()

Dim DateDebut As Date

Dim DateFin As Date

Dim Annee As Long

Dim Mois As Long

On Error Resume Next

DateDebut = CDate(TextBox7.Value)

If Err.Number <> 0 Then DateDebut = (TextBox7.Value)

Err.Number = 0

DateFin = Sheets("Feuil1").Range("E3")

Annee = Application.Evaluate("DATEDIF(" & DateDebut & "," & DateFin & ",""y"")")

Mois = Application.Evaluate("DATEDIF(" & DateDebut & "," & DateFin & ",""YM"")")

TextBox8.Text = Annee & "an(s) et " & Mois & " mois"

End Sub


James007 a écrit :

Bonjour,

Il te manque juste un modulo 12 ...

DateDiff("yyyy", DateDebut, DateFin, 2, 2) & " an(s) " & DateDiff("m", DateDebut, DateFin, 2, 2) Mod 12 & " mois "

En espèrant que cela t'aide ...

Je le rajoute ou

Re,

Pourquoi veux tu ajouter ... puisqu'il s'agit d'une modification toute bête ... insérer Mod 12 .... à la dernière ligne ....

Private Sub TextBox7_Change()
Dim DateDebut As Date
Dim DateFin As Date
thisMonth = Month(thisDate)
On Error Resume Next
DateDebut = CDate(TextBox7.Value)
If Err.Number <> 0 Then DateDebut = (TextBox7.Value)
Err.Number = 0
DateFin = Sheets("Feuil1").Range("E3")
TextBox8 = DateDiff("yyyy", DateDebut, DateFin, 2, 2) & " an(s) " & DateDiff("m", DateDebut, DateFin, 2, 2) Mod 12 & " mois "
End Sub

Super ça marche.

Merci beaucoup de votre aide.

Bon dimanche

sandrine13 a écrit :

Super ça marche.

Merci beaucoup de votre aide.

Bon dimanche

Content que cela fonctionne ...

Merci ... pour tes remerciements ...

James007 a écrit :
sandrine13 a écrit :

Super ça marche.

Merci beaucoup de votre aide.

Bon dimanche

Content que cela fonctionne ...

Merci ... pour tes remerciements ...

Je vais encore avoir besoin de votre aide en testant mon formulaire, je m’aperçois que j'ai encore un soucis avec datedif.

Cette fois-ci, j'aimerai savoir le nombre de jours qu'il reste entre deux dates (entrée et sortie) et lorsque la date d'aujourd'hui est supérieur a celle de la sortie afficher 0.

Voici ce que j'ai fais :

Dim DateDebut As Date

Dim DateFin As Date

On Error Resume Next

DateDebut = Sheets("Feuil1").Range("E3")

Err.Number = 0

DateFin = CDate(TextBox10.Value)

If Err.Number <> 0 Then DateFin = (TextBox10.Value)

TextBox11 = DateDiff("d", DateDebut, DateFin, 2, 2)

End Sub

Merci de votre aide

Coucou Sandrine,

Si tu le permets ... deux petits conseils ...

1. Utiliser les Balises Code ... c'est mieux pour les yeux de tout le monde .... (dans l'image ci-dessous ...le cinquième bouton ...)

2. Quand tu postes une macro ... c'est plus sûr de la poster en entier ...

balise code

Merci de l'info, je ne savais pas et promis ne manquerai pas la prochaine fois de l'utiliser.

Re,

Ta dernière ligne de macro ....

' En commentaire ... les deux lignes en vert 
' Si la date d'aujourd'hui est supérieure à celle de la sortie afficher 0
' sinon effectuer le calcul de la différence en jours '''''''''''''''''''
TextBox11 = IIf(Date > DateFin, 0, DateDiff("d", DateDebut, DateFin, 2, 2))

En espèrant que cela t'aide ...

James007 a écrit :

Coucou Sandrine,

Si tu le permets ... deux petits conseils ...

1. Utiliser les Balises Code ... c'est mieux pour les yeux de tout le monde .... (dans l'image ci-dessous ...le cinquième bouton ...)

2. Quand tu postes une macro ... c'est plus sûr de la poster en entier ...

[quote][/quote]

Private Sub TextBox10_Change()

Dim DateDebut As Date

Dim DateFin As Date

'gère l'erreur de la date entrée de cette façon : dimanche 24 février 2013

On Error Resume Next

DateDebut = Sheets("Feuil1").Range("E3")

'remet à 0 pour la date suivante

Err.Number = 0

DateFin = CDate(TextBox10.Value)

'idem que plus haut

If Err.Number <> 0 Then DateFin = (TextBox10.Value)

TextBox11 = DateDiff("d", DateDebut, DateFin, 2, 2)

End Sub

Sandrine,

As-tu vu le message précédent le tien ... ???

TextBox11 = IIf(Date > DateFin, 0, DateDiff("d", DateDebut, DateFin, 2, 2))
James007 a écrit :

Sandrine,

As-tu vu le message précédent le tien ... ???

Oui, j'ai répondu mais ne sais pas ou y sont allés.

J'ai juste voulu faire comme tu me l'as conseillé pour voir si cela était correct.

Tout marche, c'est vraiment super, merci beaucoup pour ton aide. C'est vraiment génial de prendre de ton temps pour nous aider.

Merci beaucoup.

Bonne journée

Content que cela fonctionne ...

Merci ... pour tes remerciements ...

Bon Courage pour tout ton projet ... !!!

Rechercher des sujets similaires à "vba datedif"