Verrouiller plusieurs plages séparément

Bonjour,

J'ai trouvé sur le net un code me permettant de verrouiller la plage "B4:B24" dès que le nombre de cellules non vides est > 10.

Private Sub Worksheet_Change(ByVal Target As Excel.Range) 

'macro par Dan le 27/09/07 

Select Case Range("B2") 

Case Is = 10 

With ActiveSheet 

.Range("B4:B24").Locked = True 

Exit Sub 

End With 

Case Else 

With ActiveSheet 

.Range("B4:B24").Locked = False 

End With 

End Select 

End Sub

Je voudrais maintenant les plages C4:C24, D4:D24, E4:E24, etc réagissent individuellement de la même façon.

ça me permet de bloquer les inscriptions à chaque évènement dès que le quota est atteint.

Merci

Bonjour Pascal26

Voici un code optimisé

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim Plg As Range
  If Not Intersect(Range("B4:B24,C4:C24,D4:D24,E4:E24"), Target) Is Nothing Then
    Set Plg = Range(Cells(4, Target.Column), Cells(24, Target.Column))
    If WorksheetFunction.CountA(Plg) > 10 Then
      Plg.Locked = True
    Else
      Plg.Locked = False
    End If
  End If
  Set Plg = Nothing
End Sub

Mais bloquer les cellules ne sert à rien si la feuille n'est pas protégée également

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.

Merci à vous 2 mais je n'arrive pas à faire fonctionner vos propositions.

En PJ mon fichier anonymisé avec uniquement une MFC qui colore la colonne en rouge dès que la 10° inscription est validée

11events.xlsm (10.66 Ko)

Re,

Voilà avec le code à mettre dans la feuille

J'ai ajouté un petit bonus

ça marche impec.

Merci

Et merci également pour le MsgBox d'avertissement, en bonus

Rechercher des sujets similaires à "verrouiller plages separement"