RETOURNE NUMÉRO DE SEMAINE D'UNE DATE SAISIE (TRÈS SIMPLE)

Ricks27 Messages postés 79 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 29 juillet 2005 - 8 juil. 2002 à 09:13
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 - 30 janv. 2006 à 11:37
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/3923-retourne-numero-de-semaine-d-une-date-saisie-tres-simple

tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
30 janv. 2006 à 11:37
Effectivement, des fois, il sort 53 à la place 52, j'avais pas vu
tbbuim1 Messages postés 940 Date d'inscription jeudi 20 février 2003 Statut Membre Dernière intervention 3 février 2011 9
30 janv. 2006 à 11:18
??? je ne comprends pas ton post Ricks.
La semaine 53 exite si le 1er janvier commence un vendredi, samedi ou dimanche.
Le seul bug de la fonction format est qu'étant donné que Weekday commence un Dimanche (va savoir pourquoi), il décale tous les résultats d'un jour.
Ainsi le 01/01/06 (qui est un dimanche) fait parti de la semaine 1 pour lui, hors ça fait tjs parti de la semaine 53!!!!
Donc pour rectifier celà, il suffit de faire:
Format((date - 1),"ww")
sarl_adc Messages postés 141 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 20 octobre 2005
27 avril 2005 à 16:21
Merci pour ce source qui m'a évité pas mal de lignes de code et de réfléexion ;-)

Merci pour ton comm Ricks27 aussi, sans lequel j'aurais pu avoir un joli bug dans les années à venir !
Ricks27 Messages postés 79 Date d'inscription mardi 4 juin 2002 Statut Membre Dernière intervention 29 juillet 2005
8 juil. 2002 à 09:13
Tu oublies de gérer le bug de la fonction Format. Car ds certain cas, celle-ci renvoie 53 au lieu de 52.

Function TrouverNuméroSemaine(ByVal Dte As Date) As Integer
TrouverNuméroSemaine = Format(Dte, "ww", vbSaturday, vbFirstFullWeek)
If TrouverNuméroSemaine > 52 Then
If Format(Dte + 7, "ww", vbMonday, vbFirstFullWeek) = 2 Then
TrouverNuméroSemaine = 1
End If
End If
End Function
Rejoignez-nous