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
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
9 réponses
Utilisateur anonyme
Modifié le 19 juin 2018 à 18:24
Modifié le 19 juin 2018 à 18:24
Bonjour
Comment sont définis et initialisés Weekend et Vacances ?
Comment sont définis et initialisés Weekend et Vacances ?
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
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.
Weekend permet d'afficher (Masquer) les weekend en fond gris et même principe pour Vacances.
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
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
Private Sub Weekend_Click()
If Weekend = True Then
Call AfficheWeekend
Else: Call MasqueWeekend
End If
End Sub
Utilisateur anonyme
19 juin 2018 à 21:46
19 juin 2018 à 21:46
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
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
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
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
22723
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
25 avril 2024
1 476
19 juin 2018 à 23:57
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?
as-tu bien mis "option explicit" en début de module?
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
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. |
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
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?
Il me semble que tu déclares Vacances, que tu n'y assignes rien, et puis que tu le testes. bizarre, non?
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
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!
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!
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
20 juin 2018 à 23:15
oui, en début de module, cela va t'aider à comprendre les erreurs.
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
20 juin 2018 à 23:17
les cases à cocher ne sont pas accessibles en utilisant simplement leur noms.
peux-tu partager ton fichier?
peux-tu partager ton fichier?
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
20 juin 2018 à 10:19