Sub Verrouillage(Target As Range)
Dim P As Range, Q As Range, R As Range, S As Range, i&, j As Byte
Static derlig& 'mémorise la variable
Set P = Feuil1.[D6].CurrentRegion.Resize(Rows.Count - 5)
If Intersect(P, Target) Is Nothing Then Exit Sub
'---déverrouillage/verrouillage limité aux lignes modifiées---
Intersect(P, Target.EntireRow).Locked = False
Intersect(P, Target.EntireRow).Interior.Pattern = xlNone
On Error Resume Next
Set Q = P(2, 2).Resize(P.Rows.Count - 1, P.Columns.Count - 1)
Set Q = Intersect(Q, Target.EntireRow)
Set R = Q.SpecialCells(xlCellTypeConstants, 1)
Set S = Intersect(Q, R.EntireRow)
S.Locked = True
S.Interior.Pattern = xlGray25
R.Locked = False
R.Interior.Pattern = xlNone
'---bordures---
i = P.Find("*", , xlValues, , xlByRows, xlPrevious).Row - 4
If i = derlig Then Exit Sub
derlig = i
P.Rows(i + 1).Resize(P.Rows.Count - i).Borders.LineStyle = xlNone
With P.Resize(i)
For j = 7 To 11
.Borders(j).Weight = xlThin
Next
.Borders(xlInsideHorizontal).Weight = xlHairline
.Rows(1).Borders(xlEdgeBottom).Weight = xlThin
End With
End Sub