Les Snippets

Connexion

Recuperer le numero de la semaine

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 25/03/2006 23:36:20 et initié par EBArtSoft [Liste]
Vue : 11437
Catégorie(s) : Maths
Langages dispo pour ce code :
- VB6, VBA
- PHP 3, PHP 4, PHP 5
- C# 1.x, C# 2.x
- VB6
- VB 2005, VB.NET 1.x
- C# 1.x, C# 2.x
- VB6, VBA
- Voir tous les langages pour ce code snippet



Langage : VB6 , VBA
Date ajout : 04/01/2008
Posté par Renfield [Liste]
'# http://fr.wikipedia.org/wiki/ISO_8601#Num.C3.A9ro_de_semaine
Public Function Week(ByVal vDate As Date) As Integer
Dim dThursday As Date
Dim dMonday As Date
Dim nResult As Single
   '# Calculer le jeudi de la même semaine que la date cherchée.
   '# On calculera le numéro de semaine de ce jeudi pour être sûr de compter dans la
   '# bonne année sans test particulier. (Ce jeudi peut tomber l'année précédente ou suivante,
   '# c'est tout l'intérêt.)
   dThursday = DateAdd("D", 4 - Weekday(vDate, vbMonday), vDate)
   
   '# On considère le 4 janvier de la même année que ce jeudi
   dMonday = DateSerial(Year(dThursday), 1, 4)
   
   '# On calcule le lundi de la même semaine que ce 4 janvier (identifiant ainsi le début du comptage;
   '# noter que ce lundi peut lui même tomber l'année encore avant: peu importe)
   dMonday = DateAdd("D", 1 - Weekday(dMonday, vbMonday), dMonday)
   '# On calcule le nombre de jours écoulés entre nos deux dates particulières (ce jeudi et ce lundi).
   '# On divise par 7 (arrondir à l'entier supérieur). On a le résultat voulu.
   nResult = Abs(DateDiff("D", dThursday, dMonday)) / 7
   If Fix(nResult) <> nResult Then
       Week = nResult + 1
   Else
       Week = nResult
   End If
End Function