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.

image

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.

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 Sub

Merci à 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 sub

la feuille "PLANNING ETUDIANT" est protégée de nouveau au sortir de la macro.

Cdlt

Rechercher des sujets similaires à "boucle calendrier effacer verrouiller"