Bonjour à tous,
DatePart (comme la fonction d'Excel utilisée avec le paramètre 21) n'est pas fiable utilisée pour définir le numéro de semaine. Elle est en erreur cyclique (tous les 28 ans).
En voici une (mais il n'en manque pas pour assurer un calcul exact pour tous les siècles passés et l'éternité à venir...)
Function NSEM(d As Date) As Integer
Dim dref
Application.Volatile
dref = DateSerial(Year(d + (8 - Weekday(d)) Mod 7 - 3), 1, 3)
dref = dref - Weekday(dref) + 2
NSEM = (d - dref) \ 7 + 1
End Function
La première ligne provient d'une fonction écrite par Laurent Longre, elle définit l'année ISO de référence pour évaluer ensuite le numéro de semaine. [Sur les nombreuses consultations de travaux sur cette question et tous les calculs que j'ai par ailleurs pu faire, je n'ai jamais trouvé mieux pour pointer la bonne année de façon aussi concise. Je lui fais par contre pointer la date du 3 janvier, considérant que c'est la meilleure, non pas tant pour l'efficacité du calcul, plusieurs dates se valent à cet égard, mais surtout pour expliquer et faire comprendre sur quoi repose le calcul.] Les deux dernières lignes pourraient être condensées en une seule...
Cordialement.