Boucle sur calendrier pour effacer cellule et verrouiller les cellules
Bonjour à tous !
J'ai bien avancé sur mon planning actuel.
Tout va bien mais dans un soucis du détail je cherche à boucler pour effacer du contenu et verrouiller les cellules grisées.
Comme vous le voyez, en fonction de la periode noté, une partie est grisée par MFC
=OU(D$6<DATA!$C$13;D$6>DATA!$E$13)J'arrive un percevoir le début de code a créer mais pas la boucle.
For Each Cell in....Sachant que mon tableau est en 4 partie (4 mois max pour le planning des étudiants)
Sur le fichier, j'ai fais exprès de vous montrer le plus large et que la zone grisé peut etre soit à droite si inferieur à la date de début de période soit à gauche si supérieur à la date de fin
Les parties qui doivent être verrouillées sont les cellules ("HORRAIRES" et "REFERENT IDE")
Merci d'avance pour l'aide que vous m'apporterez.
Bonjour,
Voilà,
Cdlt
Bonjour.
Tout d'abord, merci pour votre aide.
Malheureusement quand on change la date celle-ci sont toujours locked = true,
La solution serait-elle de la mettre dans le Worksheet_Change ?
Merci.
Ce code fonctionne bien mais je n'ai pas terminé un seul mois et déjà énormément de ligne....
Sub DateMinDateMax()
Datemin = Sheets("DATA").Range("Datemin").Value
Datemax = Sheets("DATA").Range("DateMax").Value
With Sheets("PLANNING ETUDIANT")
.Unprotect
If .Range("D6").Value < Datemin Or .Range("D6").Value > Datemax Then
.Range("D8:D11").ClearContents
.Range("D14:D22").ClearContents
.Range("D8:D11").Locked = True
.Range("D14:D22").Locked = True
Else
.Range("D8:D11").Locked = False
.Range("D14:D22").Locked = False
End If
If .Range("E6").Value < Datemin Or .Range("E6").Value > Datemax Then
.Range("E8:E11").ClearContents
.Range("E14:E22").ClearContents
.Range("E8:E11").Locked = True
.Range("E14:E22").Locked = True
Else
.Range("E8:E11").Locked = False
.Range("E14:E22").Locked = False
End If
If .Range("F6").Value < Datemin Or .Range("F6").Value > Datemax Then
.Range("F8:F11").ClearContents
.Range("F14:F22").ClearContents
.Range("F8:F11").Locked = True
.Range("F14:F22").Locked = True
Else
.Range("F8:F11").Locked = False
.Range("F14:F22").Locked = False
End If
If .Range("G6").Value < Datemin Or .Range("G6").Value > Datemax Then
.Range("G8:G11").ClearContents
.Range("G14:G22").ClearContents
.Range("G8:G11").Locked = True
.Range("G14:G22").Locked = True
Else
.Range("G8:G11").Locked = False
.Range("G14:G22").Locked = False
End If
If .Range("H6").Value < Datemin Or .Range("H6").Value > Datemax Then
.Range("H8:H11").ClearContents
.Range("H14:H22").ClearContents
.Range("H8:H11").Locked = True
.Range("H14:H22").Locked = True
Else
.Range("H8:H11").Locked = False
.Range("H14:H22").Locked = False
End If
If .Range("I6").Value < Datemin Or .Range("I6").Value > Datemax Then
.Range("I8:I11").ClearContents
.Range("I14:I22").ClearContents
.Range("I8:I11").Locked = True
.Range("I14:I22").Locked = True
Else
.Range("I8:I11").Locked = False
.Range("I14:I22").Locked = False
End If
If .Range("J6").Value < Datemin Or .Range("J6").Value > Datemax Then
.Range("J8:J11").ClearContents
.Range("J14:J22").ClearContents
.Range("J8:J11").Locked = True
.Range("J14:J22").Locked = True
Else
.Range("J8:J11").Locked = False
.Range("J14:J22").Locked = False
End If
If .Range("K6").Value < Datemin Or .Range("K6").Value > Datemax Then
.Range("K8:K11").ClearContents
.Range("K14:K22").ClearContents
.Range("K8:K11").Locked = True
.Range("K14:K22").Locked = True
Else
.Range("K8:K11").Locked = False
.Range("K14:K22").Locked = False
End If
If .Range("L6").Value < Datemin Or .Range("L6").Value > Datemax Then
.Range("L8:L11").ClearContents
.Range("L14:L22").ClearContents
.Range("L8:L11").Locked = True
.Range("L14:L22").Locked = True
Else
.Range("L8:L11").Locked = False
.Range("L14:L22").Locked = False
End If
If .Range("M6").Value < Datemin Or .Range("M6").Value > Datemax Then
.Range("M8:M11").ClearContents
.Range("M14:M22").ClearContents
.Range("M8:M11").Locked = True
.Range("M14:M22").Locked = True
Else
.Range("M8:M11").Locked = False
.Range("M14:M22").Locked = False
End If
If .Range("N6").Value < Datemin Or .Range("N6").Value > Datemax Then
.Range("N8:N11").ClearContents
.Range("N14:N22").ClearContents
.Range("N8:N11").Locked = True
.Range("N14:N22").Locked = True
Else
.Range("N8:N11").Locked = False
.Range("N14:N22").Locked = False
End If
If .Range("O6").Value < Datemin Or .Range("O6").Value > Datemax Then
.Range("O8:O11").ClearContents
.Range("O14:O22").ClearContents
.Range("O8:O11").Locked = True
.Range("O14:O22").Locked = True
Else
.Range("O8:O11").Locked = False
.Range("O14:O22").Locked = False
End If
If .Range("P6").Value < Datemin Or .Range("P6").Value > Datemax Then
.Range("P8:P11").ClearContents
.Range("P14:P22").ClearContents
.Range("P8:P11").Locked = True
.Range("P14:P22").Locked = True
Else
.Range("P8:P11").Locked = False
.Range("P14:P22").Locked = False
End If
If .Range("Q6").Value < Datemin Or .Range("Q6").Value > Datemax Then
.Range("Q8:Q11").ClearContents
.Range("Q14:Q22").ClearContents
.Range("Q8:Q11").Locked = True
.Range("Q14:Q22").Locked = True
Else
.Range("Q8:Q11").Locked = False
.Range("Q14:Q22").Locked = False
End If
If .Range("R6").Value < Datemin Or .Range("R6").Value > Datemax Then
.Range("R8:R11").ClearContents
.Range("R14:R22").ClearContents
.Range("R8:R11").Locked = True
.Range("R14:R22").Locked = True
Else
.Range("R8:R11").Locked = False
.Range("R14:R22").Locked = False
End If
If .Range("S6").Value < Datemin Or .Range("S6").Value > Datemax Then
.Range("S8:S11").ClearContents
.Range("S14:S22").ClearContents
.Range("S8:S11").Locked = True
.Range("S14:S22").Locked = True
Else
.Range("S8:S11").Locked = False
.Range("S14:S22").Locked = False
End If
If .Range("T6").Value < Datemin Or .Range("T6").Value > Datemax Then
.Range("T8:T11").ClearContents
.Range("T14:T22").ClearContents
.Range("T8:T11").Locked = True
.Range("T14:T22").Locked = True
Else
.Range("T8:T11").Locked = False
.Range("T14:T22").Locked = False
End If
If .Range("U6").Value < Datemin Or .Range("U6").Value > Datemax Then
.Range("U8:U11").ClearContents
.Range("U14:U22").ClearContents
.Range("U8:U11").Locked = True
.Range("U14:U22").Locked = True
Else
.Range("U8:U11").Locked = False
.Range("U14:U22").Locked = False
End If
If .Range("V6").Value < Datemin Or .Range("V6").Value > Datemax Then
.Range("V8:V11").ClearContents
.Range("V14:V22").ClearContents
.Range("V8:V11").Locked = True
.Range("V14:V22").Locked = True
Else
.Range("V8:V11").Locked = False
.Range("V14:V22").Locked = False
End If
End With
End SubMerci à vous
J'ai finalement fais ça pour chaque mois. Ca fonctionne nickel, bien que ce soit lourd en ligne.
Bonne journée. Et merci encore.
Bonjour,
C'est pourtant simple, lorsque vous voulez changer de période, dans le module de la feuille "DATA";
dans la macro "Private Sub Worksheet_Change(ByVal Target As Range)"
Enlevez la protection de la feuille "PLANNING ETUDIANT", puis juste après appelez la macro "Cellules_Grisees", c'est tout.
en code simplifié, ça donne ceci (à adapter)
Private Sub Worksheet_Change(ByVal Target As Range)
sheets("PLANNING ETUDIANT").unprotect
Cellules_Grisees
End subla feuille "PLANNING ETUDIANT" est protégée de nouveau au sortir de la macro.
Cdlt