Jour ferié en vb.net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 9 352 fois - Téléchargée 37 fois

Contenu du snippet

Comme vous le savez surement, les fonctions "date" ont totalement changés entre Vb6 et Vb.NET.

J'ai passé pas mal de temps à modifiez une source VB6 indiquant si un jour est férié ou non et je vous en fait part.

Source / Exemple :


Function BooJourFerie(ByVal Jour As Date) As Boolean
        Dim JJ, AA, MM As Integer
        Dim NbOr, Epacte As Integer
        Dim PLune, Paques, Ascension, Pentecote As Date

        JJ = Microsoft.VisualBasic.Day(Jour)
        MM = Month(Jour)
        AA = Year(Jour)

        If JJ = 1 And MM = 1 Then BooJourFerie = True : Exit Function '1 Janvier
        If JJ = 1 And MM = 5 Then BooJourFerie = True : Exit Function '1 Mai
        If JJ = 8 And MM = 5 Then BooJourFerie = True : Exit Function '8 Mai
        If JJ = 14 And MM = 7 Then BooJourFerie = True : Exit Function '14 Juillet
        If JJ = 15 And MM = 8 Then BooJourFerie = True : Exit Function '15 Août
        If JJ = 1 And MM = 11 Then BooJourFerie = True : Exit Function '1 Novembre
        If JJ = 11 And MM = 11 Then BooJourFerie = True : Exit Function '11 Novembre
        If JJ = 25 And MM = 12 Then BooJourFerie = True : Exit Function '25 Décembre

        NbOr = (AA Mod 19) + 1
        Epacte = CType((11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30, Integer)
        PLune = CDate("19/04/" & AA)
        PLune = PLune.AddDays(-((Epacte + 6) Mod 30))
        If Epacte = 24 Then PLune = PLune.AddDays(-1)
        If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune.AddDays(-1)

        Paques = PLune.AddDays(-Weekday(PLune) + vbMonday + 7)   'Paques
        If JJ = Microsoft.VisualBasic.Day(Paques) And MM = Month(Paques) Then BooJourFerie = True : Exit Function

        Ascension = Paques.AddDays(38)   'Ascension
        If JJ = Microsoft.VisualBasic.Day(Ascension) And MM = Month(Ascension) Then BooJourFerie = True : Exit Function

        Pentecote = Ascension.AddDays(11)  'Pentecote
        If JJ = Microsoft.VisualBasic.Day(Pentecote) And MM = Month(Pentecote) Then BooJourFerie = True : Exit Function

        BooJourFerie = False
    End Function

A voir également

Ajouter un commentaire Commentaires
Messages postés
3
Date d'inscription
dimanche 2 février 2003
Statut
Membre
Dernière intervention
27 avril 2004

Tant qu'a faire d'etre en .NET l'etre completement :
Function BooJourFerie(ByVal Jour As Date) As Boolean
Dim JJ, AA, MM As Integer
Dim NbOr, Epacte As Integer
Dim PLune, Paques, Ascension, Pentecote As Date

JJ = Jour.Day
MM = Jour.Month
AA = Jour.Year

If JJ 1 And MM 1 Then Return True '1 Janvier
If JJ 1 And MM 5 Then Return True '1 Mai
If JJ 8 And MM 5 Then Return True '8 Mai
If JJ 14 And MM 7 Then Return True '14 Juillet
If JJ 15 And MM 8 Then Return True '15 Août
If JJ 1 And MM 11 Then Return True '1 Novembre
If JJ 11 And MM 11 Then Return True '11 Novembre
If JJ 25 And MM 12 Then Return True '25 Décembre

NbOr = (AA Mod 19) + 1
Epacte = CType((11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30, Integer)
PLune = CDate("19/04/" & AA)
PLune = PLune.AddDays(-((Epacte + 6) Mod 30))
If Epacte 24 Then PLune PLune.AddDays(-1)
If Epacte = 25 And (AA >= 1900 And AA < 2000) Then PLune = PLune.AddDays(-1)

Paques = PLune.AddDays(-Weekday(PLune) + vbMonday + 7) 'Paques
If JJ Paques.Day And MM Paques.Month Then Return True

Ascension = Paques.AddDays(38) 'Ascension
If JJ Ascension.Day And MM Ascension.Month Then Return True

Pentecote = Ascension.AddDays(11) 'Pentecote
If JJ Pentecote.Day And MM Pentecote.Month Then Return True
Return False

End Function
Messages postés
31
Date d'inscription
dimanche 16 mars 2003
Statut
Membre
Dernière intervention
19 avril 2003

Petite précision :
Migration de VB 6 vers VB.NET

Le type Short 16bits remplace le type Integer 16Bits
Le type Integer 16Bits devient le type Integer 32Bits
Le type long de 32Bits passe a 64bits
Messages postés
262
Date d'inscription
dimanche 1 septembre 2002
Statut
Membre
Dernière intervention
18 juin 2008

Une petite remarque qui à pas grand chose a voir avec ta source:
en VB6, "Dim Variable As Integer" = "Dim Variable As Short" en VB.net

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.