Verrouiller une cellule excel
RésoluTiti32600 Messages postés 92 Statut Membre -
Comment puis je interdire l’accès à une cellule excel, en fonction d'une donnée d'une autre cellule.
Explication
Je souhaiterais interdire l’écriture dans la cellule A1, si ma cellule A2 = NON
et permettre l’écriture dans ma cellule A1, si A2=OUI.
En même temps, je souhaiterais griser ma cellule A1 quand elle est bloquée.
je pensais à du VBA, mais je suis un peu limité.
Merci à tous
- Verrouiller une cellule excel
- Verrouiller cellule excel - Guide
- Comment aller à la ligne dans une cellule excel - Guide
- Déplacer une colonne excel - Guide
- Trier une colonne excel - Guide
- Imprimer excel sur une page - Guide
24 réponses
- 1
- 2
Le point central dans Excel est d'interdire l'écriture dans la cellule A1 lorsque A2 vaut NON et de la permettre lorsque A2 vaut OUI, avec A1 visuellement bloquée.
Des solutions basées sur VBA dans Excel ont été proposées, notamment un état actif selon A2, avec déprotection/protection de la feuille et verrouillage/déverrouillage de A1.
Une version Worksheet_Change a été proposée, s'appuyant sur A2, avec un mot de passe constant et des options pour basculer A1 entre verrouillé et déverrouillé selon OUI ou NON.
En pratique, il faut aussi déverrouiller les cellules concernées et coordonner le mot de passe, ce qui peut s'étendre à d'autres plages comme G7:G47 ou AC7:AE46.
Pas besoin de VBA pour cela,
s'il s'agit que de la cellule A1, il faut utiliser deux syntaxes
la première pour bloquer la cellule A1 si A2 contient OUI
sélectionne A1 et Validation de données, onglet Option dans Autoriser sélectionne Personnalisée la formule est
=A2="OUI"
ensuite pour griser A1 sélectionne cette cellule et Mise en forme conditionnelle
Nouvelle règle, la formule est
=A2<>"OUI"
format/Remplissage sélectionne la couleur souhaitée
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionalors déverrouille au moins la cellule A2, protège ta feuille avec le mot de passe, puis clic droit sur l'onglet de ta feuille/Visualiser le code
et colle ce code dans la grande partie vide du Visual Basic
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Range("A2") = "OUI" Then
ActiveSheet.Unprotect Password:="pwd"
Range("A1").Locked = False
Else
Range("A1").Locked = True
ActiveSheet.Protect Password:="pwd"
ActiveSheet.Protect Password:="pwd", DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
End If
End Sub
je reviens vers toi, pour avoir une petite modif
toute ma feuille est protégée par un mot de passe en ce moment c'est "pwd"
quand je tape dans A2 "OUI", toute ma feuille se déverrouille.
je souhaiterais, que seule la cellule A2 soit accessibles, mais que le reste de ma feuille reste verrouillées.
et que si j'inscris dans A1, "NON", la cellule A2 se verrouille à nouveau
titi32600
remplace le code dans le Visual par celui ci
Const Mot_pas As Variant = "pwd"
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Range("A2") = "OUI" Then
ActiveSheet.Unprotect Password:=Mot_pas
Range("A1").Locked = False
ActiveSheet.Protect Password:=Mot_pas, DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
Else
Range("A1").Locked = True
ActiveSheet.Protect Password:=Mot_pas, DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
End If
End Sub
j'ai ajouté en début de code cette ligne
Const Mot_pas As Variant = "pwd" comme cela tu n'auras qu'a changer le mot de passe uniquement dans cette ligne et le code s'adaptera.
Attention, si tu changes le mot de passe, la première fois il faudra soit reprotéger ta feuille manuellement avec le nouveau mot de passe ou au moins la déprotéger feuille avant d'intervenir sur la cellule A2, ensuite le cycle reprendra
alors regarde comme cela
Const Mot_pas As Variant = "pwd"
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Range("A2") = "OUI" Then
ActiveSheet.Unprotect Password:=Mot_pas
Range("A1").Locked = False
ActiveSheet.Protect Password:=Mot_pas, DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
ElseIf Range("A2") = "NON" Then
ActiveSheet.Unprotect Password:=Mot_pas
Range("A1").Locked = True
ActiveSheet.Protect Password:=Mot_pas, DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
End If
End Sub
clic sur ce lien
https://www.cjoint.com/
puis sur Parcourir pour sélectionner ton fichier
sur Créer le lien
colle dans ta réponse le lien généré
a part la mise en forme conditionnelle que tu n'avais pas mis en place, le fichier fonctionne bien
https://www.cjoint.com/c/FAcosGPHX1j
J'ai mis un mot de passe différent pour protéger la feuille que celui enregistré dans le code.
la cellule A1 une fois sur deux, reste active, malgré le OUI dans A2
J'ai mis le même mot de passe pour protéger la feuille, que celui inscrit dans le code,
la cellule A1 une fois sur deux reste active malgré le OUI dans A2, quelque fois, elle reste verrouillée, que ce soit OUI ou NON
J'utilise excel 2013
titi32600
dans un premier temps teste mon dernier fichier que je t'ai posté post 21 sans rien changer
https://www.cjoint.com/c/FAcosGPHX1j
et dit moi si c'est pareil
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
il fallait le dire tout de suite, tu dois certainement utiliser Mozilla firefox comme navigateur, mais cela n'est pas un problème
télécharge ce fichier enregistré dans un format 2003, on verra plus tard le format
https://www.cjoint.com/c/FAcucvo73hj
teste le et reviens rendre compte
alors ouvre mon dernier fichier, ensuite clic sur l'onglet développeur, puis module Code puis sur sécurité des macros coche la dernière proposition Activer toutes les macros (non recommandé .......
enregistrer, ferme le fichier et ouvre le à nouveau et accepte les macros, teste le fichier et reviens rendre compte
pour la sécurité des macros je t'expliquerai plus tard pour relever la sécurité
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Bizarre,
sur une feuille crée un bouton activex (onglet Développeur/module Contrôles/Insérer/crée un bouton activex
et colle ce code à
Private Sub CommandButton1_Click()
If [B5].Interior.ColorIndex = xlNone Then
[B5].Interior.ColorIndex = 3
ElseIf [B5].Interior.ColorIndex = 3 Then
[B5].Interior.ColorIndex = 4
ElseIf [B5].Interior.ColorIndex = 4 Then
[B5].Interior.ColorIndex = 3
End If
End Sub
clic plusieurs fois sur le bouton et dis mois ce qui se passe à chaque clic
je comprends de moins en moins ton problème
dans les propriétés de ta feuille (clic droit sur l'onglet/visualiser le code) supprime tous les codes et colle celui ci
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [A2]) Is Nothing Then
Call test
End If
End Sub
crée un module (dans le visual basic clic sur Insertion/Module)
dans le module colle ce code
Const Mot_pas As Variant = "pwd"
Sub test()
On Error Resume Next
If Range("A2") = "OUI" Then
ActiveSheet.Unprotect Password:=Mot_pas
Range("A1").Locked = False
ActiveSheet.Protect Password:=Mot_pas, DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
ElseIf Range("A2") = "NON" Then
ActiveSheet.Unprotect Password:=Mot_pas
Range("A1").Locked = True
ActiveSheet.Protect Password:=Mot_pas, DrawingObjects:=True, Contents:=True, Scenarios:=True
ActiveSheet.EnableSelection = xlUnlockedCells
End If
End Sub
teste ta cellule si en A2 tu as OUI A1 est accessible, si tu saisis NON A1 doit être verrouillée
je n'y comprends plus rien, je teste également mon code dans tous les sens et aucun problème si OUI en A2 la cellule A1 est accessible et si NON en A2 la cellule A1 est verrouillée
télécharge mon fichier et sans rien changer teste la cellule A2
https://www.cjoint.com/c/FAdj5WeAzAj
- 1
- 2
je viens d'essayer ta formule pour bloquer A1, mais la cellule A2 reste accessible à l’écriture, malgré le oui dans A1
en revanche, pour ce qui est de griser la cellule, ok ca marche.
merci encore
titi32600