Fonction qui renvoie si le jour est férié ou non

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 433 fois - Téléchargée 57 fois

Contenu du snippet

Slt, voila une petite fonction qui renvoie si le jour est férié ou non...Cool :)

Source / Exemple :


'-----------------------------------------------------------------------
'CETTE FONCTION N'EST PAS DE MOI!
'Elle est parue dans le SVM n°189 de Janvier 2001 p131
'Auteur: Xavier Milan
'-----------------------------------------------------------------------
'mail:vbtom@free.fr
'site:http://vbtom.phidji.com
'-----------------------------------------------------------------------
'Explications
'Command1 est le bouton où vous cliquez pour savoir si le jour est férié ou non
'Text1 est la TextBox ou vous tapez votre date au format jj/mm/aa
'Label1 est le Label ou apparait la réponses vrai/faux
'Vrai > Le jour est férié
'Faux > Le jour n'est pas férié

Function Ferié(Jour As Date) As Boolean
Dim JJ, AA As Integer
Dim NbOr, Epacte As Integer
Dim PLune, Paques, Ascension, Pentecote As Date

JJ = Day(Jour)
mm = Month(Jour)
AA = Year(Jour)

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

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

Paques = PLune - Weekday(PLune) + vbMonday + 7  'Paques
If JJ = Day(Paques) And mm = Month(Paques) Then Ferié = True: Exit Function

Ascension = Paques + 38 'Ascension
If JJ = Day(Ascension) And mm = Month(Ascension) Then Ferié = True: Exit Function

Pentecote = Ascension + 11 'Pentecote
If JJ = Day(Pentecote) And mm = Month(Pentecote) Then Ferié = True: Exit Function
Ferié = False
End Function

Private Sub Command1_Click()
Dim DateFerié As Date
DateFerié = Text1.Text
Label1.Caption = Ferié(DateFerié)
End Sub

Conclusion :


Voila,voila...N'hésiter pas à faire un tour sur mon site ou a m'envoyer un mail si ca bug.
@+

A voir également

Ajouter un commentaire Commentaires
Messages postés
27
Date d'inscription
samedi 27 mai 2006
Statut
Membre
Dernière intervention
3 juillet 2007

J'oubliais :p mais là c'est vraiment histoire de dire,
il manque une déclaration de variable ;) :

Dim JJ, AA As Integer => Dim JJ, MM, AA As Integer 
Messages postés
27
Date d'inscription
samedi 27 mai 2006
Statut
Membre
Dernière intervention
3 juillet 2007

J'ai pas entièrement testé cet algo, mais j'suis super étonné.
J'ai moi même codé cette fonction qui retourne les jours fériés (jour fériés "mobiles" compris) mais il y a beaucoup plus de lignes... Rien que le calcul de la dâte de Pâques par l'algorithme de Odin (trouvé sur Wikipédia) prend autant de lignes (bon Ok j'exagère :p) que cette fonction.
Dommage, j'aurais préféré des commentaires au niveau du calcul des dâtes des jours fériés mobile (ceux présents DANS le code sont...inutiles, les variables étant assez explicites ;)
Merci pour la source elle sera réutilisée !
Messages postés
229
Date d'inscription
dimanche 3 juin 2001
Statut
Membre
Dernière intervention
5 octobre 2003

Pkoi tu veux un zip ta la source sous les yeux....
Where is zip ? please

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.