Bonjour,

Dans cette procédure, je passe en revue un certain nombre de date calculée à partir d'une date initiale et incrémentée à chaque passage. J'ai besoin de savoir si cette date est un jour férié ou non. Je dispose donc dans une feuille de la liste des jours fériés, et j'utilise la fonction FIND

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
             Option Explicit
Dim DateEnCours As Date
Dim DateFin As Date
Dim c As Range
Sub recherche()
 
    DateEnCours = CDate("01/01/2010")
    DateFin = CDate("20/01/2010")
 
    Do While DateEnCours < DateFin
 
        Set c = Sheets("JoursFériés").Columns(1).Cells.Find(what:=DateEnCours)
            If Not c Is Nothing Then
                MsgBox DateEnCours & " FERIE"
            Else
                MsgBox DateEnCours & " OUVRE"
            End If
        DateEnCours = DateEnCours + 1
    Loop
End Sub
La liste des jours fériés dans la feuille JoursFériés est la suivante :

Jour
14/07/2008
15/08/2008
11/11/2008
25/12/2008
01/01/2009
13/04/2009
01/05/2009
08/05/2009
21/05/2009
01/06/2009
14/07/2009
15/08/2009
01/11/2009
11/11/2009
25/12/2009
01/01/2010
05/04/2010
01/05/2010
08/05/2010
13/05/2010
24/05/2010
14/07/2010
01/11/2010
11/11/2010
25/12/2010


Ca marche bien en général : c renvoie Nothing si le jour n'est pas férié, et la date trouvée si le jour est férié. SAUF dans un cas particulier : pour le cas où DateEn Cours est le 11/01/2010 (non férié...) il me renvoie la date du 11/11/2010. J'ai beau tourner le pb dans tous les sens, je ne trouve pas d'explication, donc pas de solution.

D'où cela peut-il venir ?

Merci pour votre réponse.