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 -
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???
Merci
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
-
-
Weekend et Vacances sont deux cases à cocher.
Weekend permet d'afficher (Masquer) les weekend en fond gris et même principe pour Vacances. -
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 -
Décompose le grand 'if' qui provoque l'erreur en plusieurs parties pour cerner quelle partie ne convient pas.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
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? -
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. -
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! -
