Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

déverouiller certaines cellules avec une sheet.protect

  • Initiateur de la discussion Initiateur de la discussion exceldu13
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

exceldu13

Guest
bonjour,

pouvez vous m'aider à simplifier ce code qui me parâit pas très finaud... :?

sur ma feuille je veux dévérouiller certaines cellules sur les 2 premières lignes suivantes quand on change la valeur de l'activecell.


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
LOCKE_CELLS
End Sub




Sub LOCKE_CELLS()
ActiveSheet.Unprotect "mon_code_secret^^"
Dim c As Integer
c = ActiveCell.Row
If Range("a" & c) <> "" Or Range("b" & c) <> "" Or Range("c" & c) <> "" Then
Range("a" & c + 1, "a" & c + 2).Locked = False
Range("b" & c + 1, "b" & c + 2).Locked = False
Range("c" & c + 1, "c" & c + 2).Locked = False
Range("d" & c + 1, "d" & c + 2).Locked = False
Range("e" & c + 1, "e" & c + 2).Locked = False
Range("l" & c + 1, "l" & c + 2).Locked = False
ActiveSheet.Protect "mon_code_secret^^"
End If

End Sub

merci bon we🙂
 
Dernière modification par un modérateur:
Re : déverouiller certaines cellules avec une sheet.protect

Bonsoir,
Tu peux déjà faire cette simplification :

Sub LOCKE_CELLS()
ActiveSheet.Unprotect "mon_code_secret^^"
Dim c As Integer
c = ActiveCell.Row
If Range("a" & c) <> "" Or Range("b" & c) <> "" Or Range("c" & c) <> "" Then
Range("a" & c + 1, "e" & c + 2).Locked = False
Range("l" & c + 1, "l" & c + 2).Locked = False
ActiveSheet.Protect "mon_code_secret^^"
End If

End Sub

à+
Jacou
 
Re : déverouiller certaines cellules avec une sheet.protect

Bonjour,


Sinon, tu peux un peu optimiser ainsi : (à tester)
VB:
Sub LOCKE_CELLS()
Dim c as Long
with ActiveSheet
  c = Activecell.row
  If Application.CountA(.Range("A" &  c & ":C" & c)) > 0 Then
    .Unprotect "mon_code_secret^^"
    Union(.Range("A" & c + 1 &":E" & c + 2), .Range("L" & c+1 & ":L" & c+2)).Locked = False
    .Protect "mon_code_secret^^"
  End If
end With
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
5
Affichages
903
Réponses
15
Affichages
771
Réponses
4
Affichages
753
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…