mardi 17 décembre 2013

Nombre de jours ou mois ou années entre 2 dates

Voici 3 fonctions permettant de retrouver le nombre de jours ou de mois ou d'années entre 2 dates.
(la date 1 doit être inférieure à la date 2)

1) Placer le code suivant dans un module :

'Nombre d'années
Function DifDateAnnee(pDate1 As Date, pDate2 As Date) As Long
    DifDateAnnee = DateDiff("yyyy", pDate1, pDate2)
End Function

'Nombre de mois
Function DifDateMois(pDate1 As Date, pDate2 As Date) As Long
    DifDateMois = DateDiff("m", pDate1, pDate2)
End Function

'Nombre de jours
Function DifDateJour(pDate1 As Date, pDate2 As Date) As Long
    DifDateJour = DateDiff("d", pDate1, pDate2)
End Function


2) Puis faire appel à cette fonction dans une procédure quelconque :


Sub DifferenceEntre2Dates()
    
    Dim Date1 As Date, Date2 As Date
    Date1 = "01/12/2013"
    Date2 = "15/04/2016"
    
    MsgBox "Nombre d'années entre les 2 dates : " & DifDateAnnee(Date1, Date2)
    MsgBox "Nombre de mois entre les 2 dates : " & DifDateMois(Date1, Date2)
    MsgBox "Nombre de jours entre les 2 dates : " & DifDateJour(Date1, Date2)

End Sub

Trouver le numéro de la semaine à partir d'une date

Voici une fonction permettant de déduire le numéro de la semaine dans une année.
Attention à toujours vérifier pour une date qui s'approche du 31/12 (qui appartient donc à une semaine à cheval sur l'année suivante) : dans ce cas, cette fonction renverra la valeur 1 (pour la semaine 1 de l'année suivante).

1) Placer le code suivant dans un module :
Function Semaine(UneDate As Date) As Integer
   Semaine = Format(UneDate, "ww", , vbFirstFourDays)
End Function


2) Appeler la fonction de cette manière :
Sub NumeroDeSemaine ()
   MsgBox Semaine(#10/31/2013#)
End Function