Vérrouillé si non vide

  • Initiateur de la discussion Initiateur de la discussion WDAndCo
  • 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 !

WDAndCo

XLDnaute Impliqué
Bonsoir le Forum

Comment verrouillé une ou des cellules si celles ci ne sont plus vides ?
Par Macro ou autre.

D'avance merci
Dominique
 
Re : Vérrouillé si non vide

Bonjour WDAndCo
Code:
[COLOR="DarkSlateGray"][B]Private Sub Worksheet_Change(ByVal Target As Range)
   If IsEmpty(Target) Then Target.Locked = False Else Target.Locked = True
End Sub[/B][/COLOR]
peut-être ?​
ROGER2327
#2917
 
Re : Vérrouillé si non vide

Bonsoir Dominique, Roger, JC,

A voir, au cas où plusieurs cellules sont modifiées simultanément :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
For Each Target In Target
   Target.Locked = Target <> ""
Next
End Sub

A+
 
Re : Vérrouillé si non vide

Bonsoir job75, JCGL, ROGER2327 et le Forum

Des cellules seront vraiment vides au départ puis remplis par l'utilisateur. Alors que d'autres auront une formule qui ne retourneras des valeurs en fonction des premières.
 
Re : Vérrouillé si non vide

Bonjour le forum,

Bonjour à tous,

Tes cellules seront vraiment vides ou auront une formule qui ne retournent pas de valeurs ?

A+ à tous

Bonne remarque JCGL... Le code de ROGER2327 peut être transformé comme suit:

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If IsEmpty(Target) Or Target.HasFormula = False Then Target.Locked = False Else Target.Locked = True
End Sub


Cordialement
 
Re : Vérrouillé si non vide

Bonsoir à tous*

Bonne remarque JCGL... Le code de ROGER2327 peut être transformé comme suit:
ou comme ceci (sous réserve)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Locked = (IsEmpty(Target) = False)
End Sub

PS: toutes les cellules de la feuille sont déverrouillées manuellement avant d'insérer le code.
 
Re : Vérrouillé si non vide

Re, bonsoir hbenalia, Staple,

Peut-être aussi, avec la protection de la feuille :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Me.Unprotect '+ éventuellement un mot de passe
Cells.Locked = False 'nécessaire la 1ère fois
Cells.SpecialCells(xlCellTypeConstants).Locked = True
Cells.SpecialCells(xlCellTypeFormulas).Locked = True
Me.Protect
End Sub

A la place de Cells, on peut mettre une plage...

A+
 
Re : Vérrouillé si non vide

Bonjour le forum, bonjour Staple1600

Bien vu Staple1600, simple et efficace... Merci

Bonsoir à tous*


ou comme ceci (sous réserve)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Locked = (IsEmpty(Target) = False)
End Sub

PS: toutes les cellules de la feuille sont déverrouillées manuellement avant d'insérer le code.

@ +
 
Re : Vérrouillé si non vide

Bonsoir à tous*


ou comme ceci (sous réserve)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Target.Locked = (IsEmpty(Target) = False)
End Sub

PS: toutes les cellules de la feuille sont déverrouillées manuellement avant d'insérer le code.


Petite question ..
D'ajouter une validation n'allourdi pas le processus ?
Désolé, je ne connais pas les étapes de validation en VBA

Code:
Target.Locked = Not IsEmpty(Target)
In
verse seulement la condition


Ou encore IsEmpty étant une fonction qui a mon avis tient compte des espaces

Code:
Target.Locked = trim(Target.text) <> ""
 
- 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

Discussions similaires

Réponses
2
Affichages
183
Réponses
4
Affichages
243
Retour