' Retourne une date en connaissant le Ième jour dans la semaine pour une année donnée
' ex : DateByWeekAndDOW(5,47,2003) retourne 21/11/2003
' Dow = Day Of Week 1=Lundi, 2=Mardi,...5=Vendredi
Public Function dateByWeek(ByVal Dow As Integer, _
ByVal Week As Integer, _
ByVal Year As Integer) As Date
Dim d As Date
Dim jourPremierJanvier As Integer
If Week > 0 And Week <= 53 And Dow > 0 And Dow < 8 Then
d = DateAdd("d", 0, "01/01/" & Year) ' premier jour de l'année : 01/01/yy
jourPremierJanvier = d.DayOfWeek ' jour de la semaine du premier janvier
d = DateAdd("d", -jourPremierJanvier + 1, d) ' lundi de la semaine du 01/01/yy
d = DateAdd("ww", Week - 1, d) ' lundi de la semaine à retourner
d = DateAdd("d", Dow - 1, d) ' jour de la semaine à retourner
Return d
End If
Return d
End Function