Function WeekNumber(Optional ByVal vDate As Variant) As Byte
If IsMissing(vDate) Then vDate = Date
Dim iNbJour As Integer
Dim iWeekDay As Integer
Dim bValTemp As Byte
Dim a As String
Dim b() As String
iWeekDay = Weekday(CDate("01/01/" & DatePart("yyyy", vDate)))
Select Case iWeekDay
Case 1: bValTemp = 5: Case 2: bValTemp = 6: Case 3: bValTemp = 0: Case 4: bValTemp = 1: _
Case 5: bValTemp = 2: Case 6: bValTemp = 3: Case 7: bValTemp = 4
End Select
iNbJour = CLng(DateDiff("d", CDate("31/12/" & DatePart("yyyy", vDate) - 1), vDate))
a = IIf((iNbJour + bValTemp) / 7 < 1, 53, CStr((iNbJour + bValTemp) / 7))
If VarType(a) = vbString Then b() = Split(a, ","): WeekNumber = b(0): Erase b Else WeekNumber = a
End Function
Sub Exemple_Utilisation()
MsgBox WeekNumber(#1/8/1990#)
MsgBox WeekNumber()
End Sub