Soyez le premier à donner votre avis sur cette source.
Snippet vu 12 622 fois - Téléchargée 30 fois
'Fonction pour connaitre le N° de semaine d'une date Function FindWeek(Jour As String) As String Dim i As Integer, TempWeek As Long Dim TempDay As Date 'Vérifie que la date est valide If IsDate(Jour) = False _ Then FindWeek = 0: Exit Function 'Compteur qui va balayer les dates en comptant les semaines For i = 1 To 365 'Init de la date et du n° de semaine If i = 1 Then 'Init au 01/01/ de l'année de la date demandée TempDay = "01/01/" & Year(Jour) 'Si le jour est ni samedi ni dimanche alors semaine 1 (sinon dans la semaine 0) If Weekday(TempDay, vbMonday) < 6 _ Then TempWeek = 1 _ Else TempWeek = 0 Else 'incremente le jour TempDay = TempDay + 1 'incremente la semaine si le jour est lundi If Weekday(TempDay, vbMonday) = 1 _ Then TempWeek = TempWeek + 1 End If 'Qd le compteur de jour arrive a la valeur demandée renvoie le n° de la semaine If TempDay = Jour _ Then FindWeek = TempWeek: Exit Function Next End Function 'Petit ex pour tester Sub Test() MsgBox FindWeek("21/04/2012") End Sub
http://www.vbfrance.com/code.aspx?ID=20083
je suis tombé un peu par hasard sur cette routine et voici quelques précisions :
En fait le jour de la semaine obéis à des règles strictes et est standardisée depuis 1976
les règles OIS sont les suivantes :
le premier jour de la semaine est le lundi
pour une année les semaines sont numérotées de 01 à 52 (parfois 53 si cette semaine fini un jeudi ou est issue d'une année bissextile finissant un jeudi ou un vendredi
enfin la semaine 01 est celle qui contient le premier jeudi de janvier.
voila pourquoi l'algorithme doit être modifié
par ailleurs il faudrait intégrer le calcul du calendrier grégorien pour les dates inférieures au 15 octobre 1582
bon courage
Une solution parmis tant d'autres ... mais elle a le mérite d'être présentée ... pourquoi ne pas boucler tous les 7 jours une fois trouvé le premier dimanche ?
Bon dèv et bon courage pour la suite ...
une année peut compter 53 semaines ce qui doit etre le cas pour 2012 comme ca l'est pour cette annee
cf un calendrier
@+
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.