Recuperer le numero de la semaine

Contenu du snippet

'# http://fr.wikipedia.org/wiki/ISO_8601#Num.C3.A9ro_de_semaine
Public Function Week(ByVal vDate As Date) As Integer
Dim dThursday As Date
Dim dMonday As Date
Dim nResult As Single
   '# Calculer le jeudi de la même semaine que la date cherchée.
   '# On calculera le numéro de semaine de ce jeudi pour être sûr de compter dans la
   '# bonne année sans test particulier. (Ce jeudi peut tomber l'année précédente ou suivante,
   '# c'est tout l'intérêt.)
   dThursday = DateAdd("D", 4 - Weekday(vDate, vbMonday), vDate)
   
   '# On considère le 4 janvier de la même année que ce jeudi
   dMonday = DateSerial(Year(dThursday), 1, 4)
   
   '# On calcule le lundi de la même semaine que ce 4 janvier (identifiant ainsi le début du comptage;
   '# noter que ce lundi peut lui même tomber l'année encore avant: peu importe)
   dMonday = DateAdd("D", 1 - Weekday(dMonday, vbMonday), dMonday)
   '# On calcule le nombre de jours écoulés entre nos deux dates particulières (ce jeudi et ce lundi).
   '# On divise par 7 (arrondir à l'entier supérieur). On a le résultat voulu.
   nResult = Abs(DateDiff("D", dThursday, dMonday)) / 7
   If Fix(nResult) <> nResult Then
       Week = nResult + 1
   Else
       Week = nResult
   End If
End Function 

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.