[Résolu] Incompatibilité de type - Erreur 13
Bonjour,
Dans le cadre du développement d'une macro, j'essaye d'utiliser une fonction qui proviens de l'esspce de Téléchargements) qui détermine si un jour est férié ou non.
Je voudrais m'en servir à l'initialisation d'un formulaire afin de choisir une des 4 options possibles.
Dans la théorie ça devrai fonctionner, toute fois j'ai du oublier quelque chose en route, sûrmenent une broutille.
Pourriez-vous m'aider à résoudre ce problème d'incompatibilité de type ?
Voici la fonction :
et voici la partie que j'ai écrit et qui fait appelle à cette fonction :
Merci par avance pour votre aide.
Bonjour,
Dans le cadre du développement d'une macro, j'essaye d'utiliser une fonction qui proviens de l'esspce de Téléchargements) qui détermine si un jour est férié ou non.
Je voudrais m'en servir à l'initialisation d'un formulaire afin de choisir une des 4 options possibles.
Dans la théorie ça devrai fonctionner, toute fois j'ai du oublier quelque chose en route, sûrmenent une broutille.
Pourriez-vous m'aider à résoudre ce problème d'incompatibilité de type ?
Voici la fonction :
Code:
Function Ferie(jour) As Boolean
' FERIE : Détermine si un jour est férié ou non
' -------
'
' Ce programme ne traite que des dates fériées ayant cours en FRANCE.
' On y trouve les fêtes légales françaises et les fêtes catholiques
'
' Extrait de Science et vie MICRO N°189 de Janvier 2001
' Algorithme fourni par Xavier MILAN
'
' Cet algorithme a été validé sur quelques dates calculées par un autre
' algorithme codé sous Excel dans le passé
Dim JJ As Long, MM As Long, AA As Long
Dim NbOr As Long, Epacte As Long
Dim Plune As Date, Paques As Date, Ascension As Date, Pentecote As Date
JJ = DatePart("d", jour)
MM = DatePart("m", jour)
AA = DatePart("yyyy", jour)
If JJ = 1 And MM = 1 Then Ferie = True: Exit Function ' 1 Janvier (jour de l'an)
If JJ = 1 And MM = 5 Then Ferie = True: Exit Function ' 1 Mai (Fête du travail)
If JJ = 8 And MM = 5 Then Ferie = True: Exit Function ' 8 Mai (Victoire de 1945)
If JJ = 14 And MM = 7 Then Ferie = True: Exit Function ' 14 Juillet (Fête Nationale)
If JJ = 15 And MM = 8 Then Ferie = True: Exit Function ' 15 Aout (Assomption)
If JJ = 1 And MM = 11 Then Ferie = True: Exit Function ' 1 Novembre (Toussaint)
If JJ = 11 And MM = 11 Then Ferie = True: Exit Function ' 11 Novembre (Armistice de 1918)
If JJ = 25 And MM = 12 Then Ferie = True: Exit Function ' 25 Décembre (Noël)
NbOr = (AA Mod 19) + 1
Epacte = (11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30
Plune = DateSerial(AA, 4, 19)
Plune = DateAdd("y", -((Epacte + 6) Mod 30), Plune)
If Epacte = 24 Then Plune = DateAdd("y", -1, Plune)
If Epacte = 25 And (AA >= 1900 And AA < 2200) Then Plune = DateAdd("y", -1, Plune)
Paques = Plune - Weekday(Plune) + vbMonday + 7 ' Paques
If (JJ = DatePart("d", Paques) And MM = DatePart("m", Paques)) Then
Ferie = True: Exit Function
End If
Ascension = DateAdd("y", 38, Paques) ' Ascension
If (JJ = DatePart("d", Ascension) And MM = DatePart("m", Ascension)) Then
Ferie = True: Exit Function
End If
Pentecote = DateAdd("y", 11, Ascension) ' Pentecote
If (JJ = DatePart("d", Pentecote) And MM = DatePart("m", Pentecote)) Then
Ferie = True: Exit Function
End If
End Function
et voici la partie que j'ai écrit et qui fait appelle à cette fonction :
Code:
Private Sub UserForm_Initialize()
Dim jour As Date
jour = Format(Date, "dddd")
If jour = "lundi" Then
If Ferie(Date - 3) Then
Opt_4J.Value = 1
Else
Opt_vendredi.Value = 1
End If
End If
If jour = "mardi" Then
If Ferie(Date - 1) Then
Opt_4J.Value = 1
Else
Opt_Hier.Value = 1
End If
End If
If jour <> "lundi" Or "mardi" Then
If Ferie(Date - 1) Then
Opt_2J.Value = 1
Else
Opt_Hier.Value = 1
End If
End If
CmdValider.SetFocus
End Sub
Merci par avance pour votre aide.
Dernière édition: