Les mémos
Je débute...
Visites

 987879 visiteurs

 2 visiteurs en ligne

Recherche
 
Fermer

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


Catégorie : Les mémos - Dates - Heures
Page lue 8858 fois