begin process at 2010 03 15 08:52:12
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date & Heure

 > TROUVER LA SEMAINE CORRESPONDANTE A UNE DATE

TROUVER LA SEMAINE CORRESPONDANTE A UNE DATE


 Information sur la source

Note :
Aucune note
Catégorie :Date & Heure Niveau :Débutant Date de création :20/05/2004 Date de mise à jour :20/05/2004 14:29:19 Vu :9 610

Auteur : UnderScore

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

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

Source

  • '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
'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


 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) FUSEAUX HORAIRES (HORLOGES ANALOGIQUES) par Blodox
Source avec Zip Source avec une capture ANNIVERSAIRE,FÊTES ET DICTONS par claude440
Source avec Zip Source avec une capture CALCULE HEURES DE NUIT 2 par ocejade
NUMÉRO DE SEMAINE par vb5zh
Source avec Zip HORLOGE À AIGUILLES (RADIAN) par brainbass

Commentaires et avis

Commentaire de cheyenne le 20/05/2004 15:24:03

Bonjour,

Désolé,
ne fonctionne pas pour le 31/12/2004 qui est la 53ème semaine.
Je n'ai pas eu le temps de tester d'autres dates.

Amicalement de Cheyenne.

Commentaire de cheyenne le 20/05/2004 15:36:09

ReBonjour,

Voir la solution de '106' qui fonctionne très bien :

http://www.vbfrance.com/code.aspx?ID=20083

@+

Commentaire de UnderScore le 20/05/2004 17:30:33

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

@+

Commentaire de kick71 le 21/05/2004 08:35:06

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 ...

Commentaire de pbou le 21/05/2004 12:00:29

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

Commentaire de fkuchta le 21/05/2004 16:44:05

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

http://www.vbfrance.com/code.aspx?ID=20083

Commentaire de bimbodane le 21/11/2008 11:26:01

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,

 Ajouter un commentaire




Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,905 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales