Incompatibilité de type - Erreur 13

d.ryba

XLDnaute Junior
[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 :

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:

d.ryba

XLDnaute Junior
Re : Incompatibilité de type - Erreur 13

Non ça ne fonctionne pas, de plus cette partie fonctionner avant de la fonction "Ferie".
Donc je pense que le problème se situe au niveau de l'argument que je renvoi à la fonction :
Code:
Ferie (Date - x)
.
 

d.ryba

XLDnaute Junior
Re : Incompatibilité de type - Erreur 13

Après une courte pause ^^,
J'ai trouvé la solution. mromain, tu étais pas loin, j'ai mit

Code:
Dim jour As String

et corrigé

Code:
   If jour <> "lundi" Or "mardi" Then

en

Code:
 If jour <> "lundi" Or jour <> "mardi" Then

MErci d'avoir essayé, et désolé de vous avoir dérangé pour des cacahuètes.
 

mromain

XLDnaute Barbatruc
Re : Incompatibilité de type - Erreur 13

Après une courte pause ^^,
J'ai trouvé la solution. mromain, tu étais pas loin, j'ai mit

Code:
Dim jour As String
et corrigé

Code:
   [COLOR=Red][B]If jour <> "lundi" Or "mardi" Then[/B][/COLOR]
en

Code:
 If jour <> "lundi" Or jour <> "mardi" Then
MErci d'avoir essayé, et désolé de vous avoir dérangé pour des cacahuètes.

re,

je devais avoir du sable dans les yeux pour ne pas avoir vu celle-là...

a+
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 244
Membres
103 162
dernier inscrit
fcfg