begin process at 2012 02 12 05:37:38
  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 :10 923

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 LES FONCTIONS DATE PAR L'EXEMPLE. par pasquet78
Source avec Zip Source avec une capture CALENDRIER, MODE D'EMPLOI par pasquet78
Source avec Zip Source avec une capture Source .NET (Dotnet) HORLOGE DIODE AVEC 3 ALARMES ET REMISE À L'HEURE par EhJoe
Source avec Zip Source avec une capture POINTEUSE HORAIRES PAR SEMAINE par VBNoob13
Source avec Zip Source avec une capture HORLOGE À AIGUILLES SIMPLEMENT DANS UN USERFORM EXCEL par bigbe

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


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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,250 sec (4)

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