Bonjour,
Non testé car je n'ai pas le fichier, mais quelque chose comme cela devrait fonctionner
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
' optimisation similaire à JExcel2FR
If Intersect(Rows("2:24"), Target) Is Nothing Then Exit Sub
Dim colsToUpdate As Range
On Error Resume Next
Set colsToUpdate = Rows(2).SpecialCells(xlCellTypeFormulas)
On Error Goto 0
If colsToUpdate Is Nothing Then Exit Sub
Dim col As Range
For each col in colsToUpdate
col.Offset(2,0).Resize(20,1).Locked = (col.Value2 >= 10)
Next col
End Sub
EDIT : je viens de voir la réponse de JExcel2FR, si j'ai bien compris vous vouliez appliquer la macro à toutes les colonnes du classeur, d'où mon approche un peu différente de la sienne. D'ailleurs mon approche suppose que vous avez En B2,C2, etc une formule qui compte les cellules pleines en dessous, comme le suggère votre macro.