Trouver la semaine correspondante a une date

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 622 fois - Téléchargée 30 fois

Contenu du snippet

Cette petite fonction permet de trouver le n° de la semaine de la date voulue

Source / Exemple :


'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

Conclusion :


Voila simple mais souvent utile pour faire de la plannification

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
lundi 10 octobre 2005
Statut
Membre
Dernière intervention
21 novembre 2008

c'est une sollution,mais il y a un problème,quand on met la date de la dérnière journée de l'année le programme nous donnerat rien,il nous done un valeur nul,
Messages postés
44
Date d'inscription
jeudi 27 juin 2002
Statut
Membre
Dernière intervention
20 novembre 2008

Mon code fait cela, de manière un peu plus simple, il me semble :

http://www.vbfrance.com/code.aspx?ID=20083
Messages postés
1
Date d'inscription
jeudi 1 avril 2004
Statut
Membre
Dernière intervention
21 mai 2004

Bonjour,
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
Messages postés
5
Date d'inscription
mardi 12 février 2002
Statut
Membre
Dernière intervention
6 juin 2004

Bonjour,

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 ...
Messages postés
4
Date d'inscription
mercredi 15 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2004

Bonjour

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

@+
Afficher les 7 commentaires

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.