Numéro de semaine
Calcul du numéro de Semaine / Année de référence
Cette fonction permet :
- de tenir compte du bug de la dll Oleaut32.dll qui retourne parfois semaine 53 au lieu de 1
- d'éviter de cumuler les données de deux semaines 1 en début et en fin d'une même année
Function fnWeek(MyDate As Date) As String
'/ Placez cette fonction dans un module général
'/ Usage : dans un textebox
'/ = fnWeek([champdate])
Dim NoSemaine As Integer
Dim NoAnnee As Integer
If Not IsDate(MyDate) Then
fnWeek = ""
Else
NoSemaine = Format(MyDate, "ww", vbMonday, vbFirstFourDays)
If NoSemaine = 53 Then
'
' Correction Bug Oleaut32.dll (29/12/2003 par exemple)
'
If Format(MyDate + 7, "ww", vbMonday, vbFirstFourDays) = 2 Then
NoSemaine = 1
End If
End If
Select Case NoSemaine
'Affecter la semaine 1 de fin d'année au début de l'année suivante
Case 1
If Month(MyDate) = 12 Then
NoAnnee = Year(MyDate) + 1
Else
NoAnnee = Year(MyDate)
End If
Case Is < 52
NoAnnee = Year(MyDate)
'Affecter la semaine 52 ou 53 de début d'année à la fin d'année précédente
Case Is >= 52
If Month(MyDate) = 1 Then
NoAnnee = Year(MyDate) - 1
Else
NoAnnee = Year(MyDate)
End If
End Select
fnWeek = NoAnnee & "/" & Format(NoSemaine, "00")
End If
End Function
Dernière modification : 05/03/2006 22:21
Catégorie : - Dates - Heures
Page lue 10611 fois