BUG: Les fonctions Format et DatePart peuvent renvoyer un numéro de semaine erroné pour le dernier lundi de l'année
Lorsque vous utilisez la fonction Format ou DatePart pour déterminer le numéro de semaine d'une date avec la syntaxe suivante :
Code:
1 2
| Format(AnyDate, "ww", vbMonday, vbFirstFourDays)
DatePart("ww", AnyDate, vbMonday, vbFirstFourDays) |
certaines années, la semaine 53 est renvoyée pour le dernier lundi alors que ce devrait être la semaine 1.
Contournement
Si vous utilisez la fonction Format ou DatePart, vous devez vérifier la valeur renvoyée et, si c'est la valeur 53, revérifier et forcer le retour de 1, le cas échéant.
Cet exemple de code explique la procédure :
Code:
1 2 3 4 5 6
| Function WOY (MyDate As Date) As Integer ' Week Of Year
WOY = Format(MyDate, "ww", vbMonday, vbFirstFourDays)
If WOY > 52 Then
If Format(MyDate + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then WOY = 1
End If
End Function |
Collé à partir de <https://support.microsoft.com/fr-fr/kb/200299>