Où est l'erreur?

Fermé
maitika64 Messages postés 7 Date d'inscription mardi 19 juin 2018 Statut Membre Dernière intervention 20 juin 2018 - Modifié le 19 juin 2018 à 17:11
yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 - 20 juin 2018 à 23:17
Bonjour,
Je souhaite créer un calendrier qui me permettrait de griser les cases correspondant au jours fériés.
Lorsque je lance le programme un message d'erreur "n°424 Objets requis" apparait mais je ne comprends pas d'où vient l'erreur. Excel m'indique que l'erreur vient de cette ligne.
Une idée???

If ((Range("N5").Value = "S" Or Range("N5").Value = "D") And Weekend.Value = True) Or (Range("L5").Value >= Toussaint_Deb And Range("L5").Value <= Toussaint_Fin And Vacances.Value = True) Then
    Range("O5").Interior.ColorIndex = 15
    Else: Range("O5").Interior.ColorIndex = 0
End If



Merci

9 réponses

Utilisateur anonyme
Modifié le 19 juin 2018 à 18:24
Bonjour

Comment sont définis et initialisés Weekend et Vacances ?
0
maitika64 Messages postés 7 Date d'inscription mardi 19 juin 2018 Statut Membre Dernière intervention 20 juin 2018
19 juin 2018 à 19:48
Weekend et Vacances sont deux cases à cocher.
Weekend permet d'afficher (Masquer) les weekend en fond gris et même principe pour Vacances.
0
maitika64 Messages postés 7 Date d'inscription mardi 19 juin 2018 Statut Membre Dernière intervention 20 juin 2018
19 juin 2018 à 19:50
Voilà comment je fais fonctionner ma case à cocher Weekend.

Private Sub Weekend_Click()
If Weekend = True Then
Call AfficheWeekend
Else: Call MasqueWeekend
End If
End Sub
0
Utilisateur anonyme
19 juin 2018 à 21:46
Décompose le grand 'if' qui provoque l'erreur en plusieurs parties pour cerner quelle partie ne convient pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
maitika64 Messages postés 7 Date d'inscription mardi 19 juin 2018 Statut Membre Dernière intervention 20 juin 2018
19 juin 2018 à 22:38
Le père j'ai suivi ton conseil. Il semble que le problème vienne de la partie en gras.

If ((Range("N5") = "S" Or Range("N5") = "D") And Weekend_Click = True) Or (Range("M5").Value >= Toussaint_Deb And Range("M5").Value <= Toussaint_Fin And Vacances_Click = True) Then
Range("O5").Interior.ColorIndex = 15
Else: Range("O5").Interior.ColorIndex = 0
End If
0
yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
19 juin 2018 à 23:57
bonsoir, peux-tu montrer l'ensemble de ton code, ou partager ton fichier?
as-tu bien mis "option explicit" en début de module?
0
maitika64 Messages postés 7 Date d'inscription mardi 19 juin 2018 Statut Membre Dernière intervention 20 juin 2018
Modifié le 20 juin 2018 à 09:22
Voilà le code complet. Après découpage et différents tests, le problème vient des cases à cocher. Je ne sais pas si elles sont bien déclarées.

Sub MasqueJoursferies()
Dim i As Integer 'colonne
Dim j As Integer 'ligne
Dim Rentree As Date
Dim Toussaint_Deb As Date
Dim Toussaint_Fin As Date
Dim Noel_Deb As Date
Dim Noel_Fin As Date
Dim Hiver_Deb As Date
Dim Hiver_Fin As Date
Dim Paques_Deb As Date
Dim Paques_Fin As Date
Dim Ete_Deb As Date
Dim Weekend As CheckBox
Dim Vacances As CheckBox


ActiveSheet.Unprotect


Rentree = Range("AX3")
Toussaint_Deb = Range("AX6")
Toussaint_Fin = Range("AX7")
Noel_Deb = Range("AX10")
Noel_Fin = Range("AX11")
Hiver_Deb = Range("AX14")
Hiver_Fin = Range("AX15")
Paques_Deb = Range("AX18")
Paques_Fin = Range("AX19")
Ete_Deb = Range("AX22")


Range("O5").ClearContents 'Toussaint
If ((Range("N5") = "S" Or Range("N5") = "D") And Weekend.Value = xlOn) Or (Range("M5") >= Toussaint_Deb And Range("M5") <= Toussaint_Fin And <bold>Vacances.Value = xlOn</bold>) Then
Range("O5").Interior.ColorIndex = 15
    Else: Range("O5").Interior.ColorIndex = 0
End If
ActiveSheet.Range("O5").Locked = False

Range("O15").ClearContents   'Armistice
If ((Range("N15") = "S" Or Range("N15") = "D") And Weekend = True) Or (Range("M5") >= Toussaint_Deb And Range("M5") <= Toussaint_Fin And Vacances = True) Then
    Else: Range("O15").Interior.ColorIndex = 0
End If
ActiveSheet.Range("O15").Locked = False

Range("S29").ClearContents    'Noël
If ((Range("R29") = "S" Or Range("R29") = "D") And Weekend = True) Or (Range("R29") >= Noel_Deb And Range("R29") <= Noel_Fin And Vacances = True) Then
    Else: Range("S29").Interior.ColorIndex = 0
End If
ActiveSheet.Range("S29").Locked = False

Range("W5").ClearContents 'Jour de l'an
If ((Range("V5") = "S" Or Range("V5") = "D") And Weekend = True) Or (Range("V5") >= Noel_Deb And Range("V5") <= Noel_Fin And Vacances = True) Then
    Else: Range("W5").Interior.ColorIndex = 0
End If
ActiveSheet.Range("W5").Locked = False

Range("AM5").ClearContents    'Fête du travail
If ((Range("AL5") = "S" Or Range("AL5") = "D") And Weekend = True) Or (Range("AL5") >= Hiver_Deb And Range("AL5") <= Hiver_Fin And Vacances = True) Then
    Else: Range("AM5").Interior.ColorIndex = 0
End If
ActiveSheet.Range("AM5").Locked = False

Range("AM12").ClearContents    'Armistice
If ((Range("AL12") = "S" Or Range("AL12") = "D") And Weekend = True) Or (Range("AL12") >= Hiver_Deb And Range("AL12") <= Hiver_Fin And Vacances = True) Then
    Else: Range("AM12").Interior.ColorIndex = 0
End If
ActiveSheet.Range("AM12").Locked = False

Range("AU18").ClearContents   'Fête Nationale
If ((Range("AT18") = "S" Or Range("AT18") = "D") And Weekend = True) Or (Range("AT18") >= Ete_Deb And Vacances = True) Then
    Else: Range("AU18").Interior.ColorIndex = 0
End If
ActiveSheet.Range("AY10").Locked = False

For i = 1 To 48 Step 4
        For j = 5 To 35
        If (Cells(j, i) <> "") Then
            If Cells(j, i) = Range("AZ12") Then
                Cells(j, i + 2).ClearContents
                If Not ((Cells(j, i + 1) = "S" Or Cells(j, i + 1) = "D") And Weekend = True) Or (Vacances = True) Then
                Cells(j, i + 2).Interior.ColorIndex = 0
                End If
                ActiveSheet.Cells(j, i + 2).Locked = False
             Else
                If Cells(j, i) = Range("AZ13") Then
                    Cells(j, i + 2).ClearContents
                    If Not ((Cells(j, i + 1) = "S" Or Cells(j, i + 1) = "D") And Weekend = True) Or (Vacances = True) Then
                        Cells(j, i + 2).Interior.ColorIndex = 0
                    End If
                    ActiveSheet.Cells(j, i + 2).Locked = False
                Else
                    If Cells(j, i) = Range("AZ14") Then
                        Cells(j, i + 2).ClearContents
                        If Not ((Cells(j, i + 1) = "S" Or Cells(j, i + 1) = "D") And Weekend = True) And (Vacances = True) Then
                            Cells(j, i + 2).Interior.ColorIndex = 0
                        End If
                        ActiveSheet.Cells(j, i + 2).Locked = False
                    Else
                        If Cells(j, i) = Range("AZ15") Then
                            Cells(j, i + 2).ClearContents
                            If Not ((Cells(j, i + 1) = "S" Or Cells(j, i + 1) = "D") And Weekend = True) Or (Vacances = True) Then
                                Cells(j, i + 2).Interior.ColorIndex = 0
                            End If
                            ActiveSheet.Cells(j, i + 2).Locked = False
                                Else
                                    If Cells(j, i) = Range("AZ16") Then
                                        Cells(j, i + 2).ClearContents
                                        If Not ((Cells(j, i + 1) = "S" Or Cells(j, i + 1) = "D") And Weekend = True) Or (Vacances = True) Then
                                            Cells(j, i + 2).Interior.ColorIndex = 0
                                        End If
                                        ActiveSheet.Cells(j, i + 2).Locked = False
                                        Else
                                            If Cells(j, i) = Range("AZ17") Then
                                                Cells(j, i + 2).ClearContents
                                                If Not ((Cells(j, i + 1) = "S" Or Cells(j, i + 1) = "D") And Weekend = True) Or (Vacances = True) Then
                                                    Cells(j, i + 2).Interior.ColorIndex = 0
                                                End If
                                                ActiveSheet.Cells(j, i + 2).Locked = False
                                            End If
                                    End If
                        End If
                    End If
                 End If
            End If
           End If
        Next j
    Next i

ActiveSheet.Protect

End Sub


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
0
yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
Modifié le 20 juin 2018 à 09:50
as-tu bien mis "option explicit" en début de module?
Il me semble que tu déclares Vacances, que tu n'y assignes rien, et puis que tu le testes. bizarre, non?
0
Utilisateur anonyme
20 juin 2018 à 09:56
Si tu redéclares Weekend et Vacances dans la fonction, ce sont de nouvelles variables. Elles n'ont aucun rapport avec des cases à cocher déjà existantes, même si elles portent le même nom.
0
maitika64 Messages postés 7 Date d'inscription mardi 19 juin 2018 Statut Membre Dernière intervention 20 juin 2018
20 juin 2018 à 10:14
Yg_be, Je n'ai pas mis de option explicit. Je le place avant le sub?


Le père, je supprime donc la déclaration de weekend et vacances. Mais le programme comprends donc automatiquement que je fais référence aux cases à cocher? Car même en supprimant, ça ne fonctionne pas!
0
yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
20 juin 2018 à 23:15
oui, en début de module, cela va t'aider à comprendre les erreurs.
0
yg_be Messages postés 22723 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
20 juin 2018 à 23:17
les cases à cocher ne sont pas accessibles en utilisant simplement leur noms.
peux-tu partager ton fichier?
0
maitika64 Messages postés 7 Date d'inscription mardi 19 juin 2018 Statut Membre Dernière intervention 20 juin 2018
20 juin 2018 à 10:19



Je souhaite que quand je décoche Jours Fériés, le jour de Toussaint reste en gris puisqu'il est pendant les vacances et que la case Vacances est cochée.
0