Les Snippets

Connexion

Retourner le Nième jour de la période (ex : 3ème lundi d'aout 2010)

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 04/12/2010 00:23:09 et initié par PCPT [Liste]
Date de mise à jour : 04/12/2010 09:59:11
Vue : 3792
Catégorie(s) : Date & Heure
Langages dispo pour ce code :
- VB6, VBA
- VB 2005, VB 2008, VB.NET 1.x



Langage : VB6 , VBA
Date ajout : 04/12/2010
Posté par PCPT [Liste]
DateMAJ : 04/12/2010
Function GetSpecificalDay(ByVal eDayOfWeek As VBA.VbDayOfWeek, ByVal iIterationInMonth, ByVal dDate As DateAs Date
    'iDayOfWeek             jour de la semaine recherché
    'iIterationInMonth      position du jour dans le mois. ex : 2 pour le 2ème mercredi du mois
    'dDate                  date de recherche, le mois et l'année servent de référence
    Dim dRef As Date, dDif As Date, i As Integer
'   1er du mois/année à charger
    dRef = DateSerial(Year(dDate), Month(dDate), 1)
    dDif = dRef
'   à laquelle on ajoute le jour recherché
    For i = 0 To 6
        dDif = DateAdd("d", i, dRef)
        If Weekday(dDif) = eDayOfWeek Then Exit For
    Next
'   on a maintenant le premier jour recherché. exception nombre négatif non-pris en compte
    If iIterationInMonth > 1 Then dDif = DateAdd("d", (iIterationInMonth - 1* 7, dDif)
'   test de valeur MAX (supérieur à 4 ou 5 selon les mois pour la cohérence)
    If Month(dDif) <> Month(dRef) Then Err.Raise vbError, "GetSpecificalDay", _
        "Erreur d'utilisation de la fonction, le mois [M-" & CStr(Month(dRef)) & "] ne contient pas " & _
        CStr(iIterationInMonth) & " [D-" & CStr(Weekday(dDif)) & "]."
    GetSpecificalDay = dDif
End Function
Remarque :
LE 04/12/2010 :
    GetSpecificalDay(vbTuesday, 1, Now) retournera 07/12/2010
    GetSpecificalDay(vbTuesday, 4, Now) retournera 28/12/2010
    GetSpecificalDay(vbWednesday, 1, Now) retournera 01/12/2010
    GetSpecificalDay(vbThursday, 5, Now) retournera 30/12/2010
    GetSpecificalDay(vbSaturday, 8, Now) relèvera l'erreur 'le mois [M-12] ne contient pas 8 [D-7].
    
Langage : VB.NET 1.x , VB 2005 , VB 2008
Date ajout : 05/12/2010
Posté par PCPT [Liste]

    Function GetSpecificalDay(ByVal eDayOfWeek As System.DayOfWeek, ByVal iIterationInMonth As IntegerByVal dDate As DateAs Date
        'iDayOfWeek             jour de la semaine recherché
        'iIterationInMonth      position du jour dans le mois. ex : 2 pour le 2ème mercredi du mois
        'dDate                  date de recherche, le mois et l'année servent de référence
        '1er du mois/année à charger
        Dim dRef As Date = New Date(dDate.Year, dDate.Month, 1)
        Dim dDif As Date = dRef
        'à laquelle on ajoute le jour recherché
        For i As Int16 = 0 To 6
            dDif = dRef.AddDays(i)
            If dDif.DayOfWeek = eDayOfWeek Then Exit For
        Next
        'on a maintenant le premier jour recherché. exception nombre négatif non-pris en compte
        If iIterationInMonth > 1 Then dDif = dDif.AddDays((iIterationInMonth - 1* 7)
        'test de valeur MAX (supérieur à 4 ou 5 selon les mois pour la cohérence)
        If Not dDif.Month.Equals(dRef.Month) Then _
            Throw New Exception(String.Format("Erreur d'utilisation de la fonction 'GetSpecificalDay'" & _
                                              ", le mois [M-{0}] ne contient pas {1} [D-{2}].", _
                                              dRef.Month, iIterationInMonth, dDif.DayOfWeek))
        Return dDif
    End Function

Snippets en rapport avec : Jour, Date, Position, Compter, Période



Codes sources en rapport avec : Jour, Date, Position, Compter, Période

{PHP} CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DEUX PÉRIODES
Cette fonction calcul le nombre de jours contenus dans la période issue de l'intersection de deux pé...

{C / C++ / C++.NET} JOUR DE NAISSANCE
Ce programme fait apparaître le jour de semaine de votre naissance, le signe astrologique, la pierre...

{JAVA / J2EE} TRAVAILLER AVEC DES JOURS/HEURES/MINUTES/SECONDES
Bonjour, Ayant fait quelques recherches sur les calculs de date et d'heure, je n'ai rien trouvé d...

{Visual Basic, VB6, VB.NET, VB 2005} CALCULS DE DATES À PARTIR D'UN CALENDRIER
Calculs sur les dates en VB 2008 Le code est bien documenté pour les débutants. Ce bout de code ne ...

{C / C++ / C++.NET} ALGORITHME DE MAURICE KRAITCHIK (1882�1957)
Petit programme permettant la détermination du jour de la semaine d'aprés l'Algorithme de "Maurice K...

{JAVA / J2EE} ADDITION SUR UNE DATE
Dans cette petit application je vous représente la possibilité d'additionné des jours sur une date. ...

{Visual Basic, VB6, VB.NET, VB 2005} CALENDRIER SOUS VBA (EXCEL)
Ce code permet de sélectionner une date dans un calendrier Le nombre de jour par mois et défini Le...

{C / C++ / C++.NET} JOUR A PARTIR D'UNE DATE MM/JJ/YYYY
mon code sert pour savoir le jour a partir de la date exprimée sous la forme mm/jj/yyyy mm : mois ...

{SQL} DERNIER JOUR DU MOIS, OU DE LA SEMAINE
J'ai mis ces fonctions toujour utiles dans CODIX (les snippets) mais l'un est faut et on peut pas le...

{Javascript / DHTML} NUMERO DE LA SEMAINE
Trois méthodes pour l'objet Date, une pour connaître le numéro du jour dans l'année, une pour obteni...