Numéro de semaine VBA

bonjour le forum,

bonjour à tous,

j'ai ce code VBA : sem = Format(Now, "ww") qui a toujours bien fonctionné jusqu'ici, mais depuis hier, fausse mes calculs, parce qu’il revoie 53 au lieu de 1 pour lundi 30/12/19 et mardi 31/12/19.

quelqu'un a-t'il une idée pour trouver la bonne semaine 1 en partant du principe que le premier jour de la semaine est lundi.

merci d'avance.

Pedro.

Bonjour,

On considère souvent que la première semaine est celle qui contient le premier jeudi :

sem = Format(Now, "ww", vbMonday, vbFirstFourDays)

Bonjour dudesson, le forum,

Un début de piste : https://www.commentcamarche.net/contents/1170-vbscript-les-fonctions-de-date-et-de-temps

Ce qui devrait donner :

sem = Format(Now, "ww", vbMonday, vbFirstFourDays)

source: https://www.commentcamarche.net/forum/affich-1533120-vbscript-numero-de-semaine

Edit: Bonjour Patrice33740

Cordialement,

bonjour Patrice33740, Xorsankukai,

bonjour le forum,

merci pour votre aide.

j'ai l'impression que pour une fois, Excel n'a pas de solution infaillible.

j'ai testé différentes solutions en allant aussi sur le lien, mais ce n'est jamais du 100% lorsqu'on test sur plusieurs années.

merci.

Pedro.

Bonjour,

oui, Datepart("ww",...) ramène une erreur sur certaines dates dont le 30/12/19, mais le 31 est correct lui. Seuls les derniers lundis sont touchés.

Les prochaines erreurs seront les 29/12/2031, 31/12/2035, 30/12/2047 et 29/12/2059.

Un contournement :

Function numSem(dat1 As Date) As Long
    numSem = DatePart("ww", dat1, vbMonday, vbFirstFourDays)
    If numSem > 52 Then If DatePart("ww", dat1 + 7, vbMonday, vbFirstFourDays) = 2 Then numSem = 1
End Function

eric

bonjour Patrice33740, Xorsankukai, Eric, et merci vous 3

bonjour le forum,

je retire ce que j'ai écrit ce matin et je la ferme.... bouche bée devant la proposition d'Eric.

elle fonctionne nickel!!!

Pedro.

Rechercher des sujets similaires à "numero semaine vba"