Calculer le numero de semaine d'une date

Contenu du snippet

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

Compatibilité : VB6, VBA

Disponible dans d'autres langages :

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.