Rapport de message :*
 

Re: Calculs de dates en VBA

Titre du sujet : Re: Calculs de dates en VBA
par criscris11 le 30/05/2012 17:55:13

Salut Didier, le forum,
Au moment où je voulais mettre ma version finale en pièce-jointe, je me suis aperçu d'un problème dans la calcul de durée (1ère partie du USF). En effet, j'ai adapté ton code que tu m'as donné sur mon post précédent mais cela ne fonctionne pas tout le temps. Je m'explique :

Du 23/01/1971 au 30/05/2012 (aujourd'hui) me donne bien 41 ans 4 mois et 8 jours.
En revanche, du 23/01/1971 au 31/05/2012 (demain) me donne 41 ans 5 mois et -22 jours ??? Pourquoi ?
Dès que je dépasse la date du jour dans "Au", j'obtiens un chiffre négatif soit les mois soit les jours ou parfois les deux (par exemple du 02/08/2008 au 31/12/2012 me donne 5 ans -7 mois et -1 jours).
Saurais-tu de quoi ça vient ?

Voici le code utilisé pour le calcul :

Private Sub CalculValid()
Dim D1 As Date, D2 As Date
    'Les dates début et fin sont-elles présentes et valables ?
    On Error Resume Next
    D1 = CDate(txtDu.Text)
    D2 = CDate(txtAu.Text)
    On Error GoTo 0
    'Calcul durée
    If D1 <> 0 And D2 <> 0 Then
        LabelAnnees = DateDiff("yyyy", D1, D2 + 1)
        LabelMois = DateDiff("m", D1, D2 + 1) - LabelAnnees.Caption * 12
        LabelJours = D2 + 1 - DateAdd("m", DateDiff("m", D1, D2 + 1), D1)
    End If
    'Bouton VALIDER activable ?
    'btnCalculValid.Enabled = D1 <> 0 And D2 <> 0
End Sub

Je joins également le fichier en précisant que ce n'est pas la version finalisée à cause des erreurs de calculs de durée.
Merci d'avance.