Verrouiller plusieurs cellules après saisie d'une donnée dans une cellule "x"

jelobo

XLDnaute Nouveau
Bonjour,

j'ai pris connaissance de nombreuses discussions, fort intéressantes, sur le sujet mais je n'ai a priori pas trouvé la réponse à mon interrogation que je reformule :
* après que la cellule (par exemple) D3 ait été complétée,
* je souhaite verrouiller (par exemple) les cellules A1, B8, C 25, ... y compris la cellule D3.

Comment procéder ?

Bien cordialement et bon dimanche !
 

job75

XLDnaute Barbatruc
Re : Verrouiller plusieurs cellules après saisie d'une donnée dans une cellule "x"

Bonjour jelobo,

Vous n'avez pas beaucoup cherché.

Il faut supposer qu'au départ la cellule D3 est déverrouillée et que la feuille est protégée (par exemple par le mot de passe TOTO).

Alors coller dans le code de la feuille (clic droit sur l'onglet et visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not (Intersect(Target, [D3]) Is Nothing Or IsEmpty([D3])) Then
  Me.Unprotect "TOTO"
  [A1,B8,C25,D3].Locked = True
  Me.Protect "TOTO"
End If
End Sub
A+
 

jelobo

XLDnaute Nouveau
Re : Verrouiller plusieurs cellules après saisie d'une donnée dans une cellule "x"

Bonjour job75,

j'ai beaucoup cherché ... mais certainement mal cherché.

Je vous remercie pour ce code dont je ne doute pas de sa pertinence ; je vais l'appliquer et vous tiendrai informé.

Bien cordialement
 

jelobo

XLDnaute Nouveau
Re : Verrouiller plusieurs cellules après saisie d'une donnée dans une cellule "x"

Bonsoir,

le code ne fonctionne pas ; la cause en est peut-être des cellules fusionnées.
Mais ce code m'a été précieux pour trouver une solution satisfaisante à mon problème.

Je remercie job75.

Bien cordialement
 

job75

XLDnaute Barbatruc
Re : Verrouiller plusieurs cellules après saisie d'une donnée dans une cellule "x"

Bonsoir jelobo,

le code ne fonctionne pas ; la cause en est peut-être des cellules fusionnées.

Oui, si par exemple la plage A1:A3 est fusionnée, il faut verrouiller toute la plage A1:A3 :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not (Intersect(Target, [D3]) Is Nothing Or IsEmpty([D3])) Then
  Me.Unprotect "TOTO"
  [A1:A3,B8,C25,D3].Locked = True
  Me.Protect "TOTO"
End If
End Sub
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 249
Messages
2 086 599
Membres
103 256
dernier inscrit
Melomaniak