cs_schnouck
Messages postés10Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention 6 juin 2012
-
5 juin 2012 à 09:25
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
5 juin 2012 à 11:47
Bjr,
Je souhaite créer une fonction Jours Fériés pour tester si le jours est ou pas férié et si oui, renvoyer la valeur "Vrai" pour un fichier de gestion.
Actuellement ma fonction me retourne toujours "Faux" et je ne comprends pas!
Pouvez-vous m'aider?
(Pour Pâques, je n'ai pas encore de calcul mais je vais bien en trouver une sur ce forum)
Merci de votre aide
Option Explicit
Public Function Feries(InputDate As Variant) As Boolean
Dim ListFeries(1 To 20) As Long, i As Integer, tDate As Long, AN As Integer
Feries = False
tDate = CDate(InputDate)
If tDate < 1 Then Exit Function
AN = Year(tDate)
If AN < 1900 Then Exit Function
' création liste jours féries
ListFeries(1) = CDate("1/1/" & AN) ' Jour de l'an
ListFeries(2) = CDate("2/1/" & AN) ' Lendemain de l'an
ListFeries(3) = CDate("1/5/" & AN) ' Fête du travail
ListFeries(4) = CDate("8/5/" & AN) ' Victoire 1945
ListFeries(6) = CDate("15/5/" & AN) 'Pâques
ListFeries(5) = ListFeries(6) - 2 ' Vendredi Saint
ListFeries(7) = ListFeries(6) + 1 'Lundi Pâques
ListFeries(8) = ListFeries(6) + 39 'Ascension= Pâques+39
ListFeries(9) = ListFeries(6) + 49 'Pentecôte= Pâques+49
ListFeries(10) = ListFeries(6) + 50 'Lundi de Pentecôte= Pâques+50
ListFeries(11) ListFeries(6) + 60 'Fête Dieu Pâques+60
ListFeries(12) = CDate("23/6/" & AN) ' Plébicite Canton Jura
ListFeries(13) = CDate("14/7/" & AN) 'Fête Nationale Française
ListFeries(14) = CDate("15/8/" & AN) ' Assomption
ListFeries(15) = CDate("1/11/" & AN) ' Toussaint
ListFeries(16) = CDate("11/11" & AN) 'Armistice 39-45
ListFeries(17) = CDate("25/12/" & AN) ' Noël
ListFeries(18) = CDate("26/12/" & AN) ' St-Etienne
' comparer la date InputDate avec la liste ListFeries
i = 1
While i <UBound(ListFeries) And Feries False
If tDate ListFeries(i) Then Feries True
i = i + 1
Wend
End Function
A voir également:
Problème sur une création de fonction Jour Féries résultat toujours "Faux"
cs_schnouck
Messages postés10Date d'inscriptionjeudi 15 janvier 2009StatutMembreDernière intervention 6 juin 2012 5 juin 2012 à 11:32
Re-bjr,
La fonction est public et je n'est pas de "On Error Resume next" dans mon module, raison pour laquelle je ne comprends vraiment pas le problème, même après correction du "/" que je te remercie d'avoir indiqué.
provoque forcément une erreur, puisque manque un ""
Et que pour que tu n'aies aucun message d'erreur, cela dénonce assez nettement que tu as abusivement ( fort mauvaise habitude ) mis un "On Error Resume next" dans le module dans lequel la fonction est appelée.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 5 juin 2012 à 10:29
Il est par ailleurs (mais rien à voir avec ton "erreur" actuelle) assez maladroit de mettre ces jours fériés en dur dans ton code. Mets-les de préférence dans un fichier texte à utiliser au moment de l'ouverture.
Il te suffira alors, sans toucher à ton code, de modifier ce fichier texte (voire d'en créer un pour chaque année). N'oublie pas que la liste des jours fériés peut varier d'une année à l'autre (décidée par décret chaque année), etc ...
Il est alors plus simple (pour une douzaine de jours seulement) d'avoir un fichier texte avec TOUS les jours fériés (cela allègera considérablement ton appli, puisque pas de calculs nécessaires). Seuls les dimanches (voire les samedi) sont à déterminer par code.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 5 juin 2012 à 11:41
Seule autre cause éventuelle (mais n'ayant rien à voir avec ta fonction elle-même) :
Un paramètre incohérent passé ( InputDate)
Quelle est sa valeur, en mode pas à pas ?
Car ce n'est pas dans la fonction elle-même, qu'il faut chercher ta cause.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 5 juin 2012 à 11:47
Tiens (tu vas comprendre) :
change donc ces 2 lignes :
tDate = CDate(InputDate)
If tDate < 1 Then Exit Function
AN = Year(tDate)
If AN < 1900 Then Exit Function
par
tDate = CDate(InputDate)
If tDate < 1 Then msgbox "ça va pas la tête ?" :Exit Function
AN = Year(tDate)
If AN < 1900 Then msgbox "ça va pas la tête ?"Exit Function
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ