Où est l'erreur?

maitika64 Messages postés 9 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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

  1. Utilisateur anonyme
     
    Bonjour

    Comment sont définis et initialisés Weekend et Vacances ?
    0
  2. maitika64 Messages postés 9 Statut Membre
     
    Weekend et Vacances sont deux cases à cocher.
    Weekend permet d'afficher (Masquer) les weekend en fond gris et même principe pour Vacances.
    0
  3. maitika64 Messages postés 9 Statut Membre
     
    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
  4. Utilisateur anonyme
     
    Décompose le grand 'if' qui provoque l'erreur en plusieurs parties pour cerner quelle partie ne convient pas.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. maitika64 Messages postés 9 Statut Membre
     
    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
  7. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  8. maitika64 Messages postés 9 Statut Membre
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
    2. Utilisateur anonyme
       
      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
  9. maitika64 Messages postés 9 Statut Membre
     
    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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      oui, en début de module, cela va t'aider à comprendre les erreurs.
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      les cases à cocher ne sont pas accessibles en utilisant simplement leur noms.
      peux-tu partager ton fichier?
      0
  10. maitika64 Messages postés 9 Statut Membre
     


    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