(RESOLU) Verrouiller et déverrouiller une cellule sous condition d'autre cellule

chaelie2015

XLDnaute Accro
Bonjour Forum
Je souhaite déverrouiller la cellule B2 si B1 est non vide sinon reste la cellule B2 verrouillée.
Salutations
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Verrouiller et déverrouiller une cellule sous condition d'autre cellule

Bonjour chaelie :)


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Range("B1") <> "" Then
        Range("B2").Locked = False
            ActiveSheet.Unprotect
    Else
        Range("B2").Locked = True
            ActiveSheet.Protect
    End If
End Sub
 

chaelie2015

XLDnaute Accro
Re : Verrouiller et déverrouiller une cellule sous condition d'autre cellule

Bonjour lone-wolf
merci pour la réponse:eek:, si tu permets j'ai fait qlq modifi. sur ton code
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   ActiveSheet.Unprotect
   
    If Range("B1") = "" Then
        
        Range("B2").Locked = True
           ' ActiveSheet.Unprotect
           
    Else
        
        Range("B2").Locked = False
            'ActiveSheet.Protect
    End If
    
ActiveSheet.Protect
End Sub
je souhaite ajouter un Msgbox"La cellule précédente non renseignée" dans le cas ou je vais saisi dans la cellule B2 (sachant que B1 EST VIDE)
NB: ce code ne fonctionne pas correctement si les cellules sont fusionnées ?????
merci par avance
 

Pièces jointes

  • charlie cellule verouillée.xlsm
    13.5 KB · Affichages: 43
  • charlie cellule verouillée.xlsm
    13.5 KB · Affichages: 38
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Verrouiller et déverrouiller une cellule sous condition d'autre cellule

I chaelie

Je te conseille en cas de macros de ne jamais fusionner les cellules, pas bon du tout.

Code:
    If Range("B1") = "" Then
        MsgBox "La cellule précédente n'est pas renseignée.", , "PROTECTION"
        Range("B2").Locked = True
 
Dernière édition:

chaelie2015

XLDnaute Accro
Re : Verrouiller et déverrouiller une cellule sous condition d'autre cellule

I chaelie

Je te conseille en cas de macros de ne jamais fusionner les cellules, pas bon du tout.

Code:
    If Range("B1") = "" Then
        MsgBox "La cellule précédente n'est pas renseignée.", , "PROTECTION"
        Range("B2").Locked = True

Bonjour Lone-wolf
encore une fois merci pour la réponse; mais ça n'a pas bien fonctionné???
parce que si je supprime le contenu de la cellule B1 il s'affiche ???? ce n'est pas ce que je cherchais.
je souhaite afficher ce message lors de la saisie dans la cellule B2 ,on le rappelant que la cellule B1 est vide(La cellule précédente n'est pas renseignée.)
SALUTATIONS
 

Pièces jointes

  • charlie cellule verouillée.xlsm
    13.8 KB · Affichages: 33
  • charlie cellule verouillée.xlsm
    13.8 KB · Affichages: 36

Lone-wolf

XLDnaute Barbatruc
Re : Verrouiller et déverrouiller une cellule sous condition d'autre cellule

Bonsoir chaelie

Et comme ceci?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B2") <> "" Then: _
MsgBox "La cellule précédente n'est pas renseignée.", , "PROTECTION": Range("B2").ClearContents: _
Exit Sub: Range("B1").Activate
    
   ActiveSheet.Unprotect
   
    If Range("B1") = "" Then
        Range("B2").Locked = True
    Else
        Range("B2").Locked = False
    End If
    
ActiveSheet.Protect
End Sub
 

Lone-wolf

XLDnaute Barbatruc
Re : Verrouiller et déverrouiller une cellule sous condition d'autre cellule

Bonsoir job

Je ne comprends pas ta réaction. :confused:

Bon je viens de lire ta réponse concernant les cellules fusionnées (sutout celle des programmeurs de Mimi, Pas Mati ;) ).

Ok, c'est compris. Je ne ferait plus la même erreur.
 
Dernière édition:

chaelie2015

XLDnaute Accro
Re : Verrouiller et déverrouiller une cellule sous condition d'autre cellule

Bonsoir chaelie

Et comme ceci?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("B2") <> "" Then: _
MsgBox "La cellule précédente n'est pas renseignée.", , "PROTECTION": Range("B2").ClearContents: _
Exit Sub: Range("B1").Activate
    
   ActiveSheet.Unprotect
   
    If Range("B1") = "" Then
        Range("B2").Locked = True
    Else
        Range("B2").Locked = False
    End If
    
ActiveSheet.Protect
End Sub

Bonjour Lone-wolf, job
désolé pour ce retard, non plus ça n'a pas fonctionné
 

Pièces jointes

  • charlie cellule verouillée.xlsm
    14.3 KB · Affichages: 34
  • charlie cellule verouillée.xlsm
    14.3 KB · Affichages: 35

job75

XLDnaute Barbatruc
Re : Verrouiller et déverrouiller une cellule sous condition d'autre cellule

Bonjour chaelie1015, Lone-wolf,

Pas besoin de VBA, formule de validation de données en B2 :

Code:
=DECALER(B2;-1;)<>""
Fonctionne que la feuille soit protégée ou pas.

Idem en D2 (qui est fusionnée).

Fichier joint.

A+
 

Pièces jointes

  • charlie cellule verouillée(1).xlsx
    9.8 KB · Affichages: 38

Lone-wolf

XLDnaute Barbatruc
Re : Verrouiller et déverrouiller une cellule sous condition d'autre cellule

Re chaelie

EDIT: Bonjour job

Un essai avec ceci peut-être?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
With ActiveSheet
Select Case .[B1]
Case Is = ""
.[B2].Locked = False
.Protect
Case Else
.[B2].Locked = True
.Unprotect
End Select
If .[B2] <> "" Then: _
MsgBox "La cellule " & .[B1].Address & " n'est pas renseignée.", , "PROTECTION": _
.[B2].ClearContents: .[B1]
End With
End Sub

Bon weekend à toi aussi.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Verrouiller et déverrouiller une cellule sous condition d'autre cellule

Re,

Si l'on tient au VBA utiliser Application.Undo :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, Me.UsedRange)
If Target Is Nothing Then Exit Sub
For Each Target In Target 'si entrées multiples
  If Target.Row > 1 And Not Target.Locked And Target <> "" Then
    If Target(0) = "" Then
      MsgBox Target(0).Address(0, 0) & " n'est pas renseignée !", 48, "PROTECTION"
      With Application
        .EnableEvents = False
        .Undo 'annule la modification
        .EnableEvents = True
        Target(0).Select
        Exit For
      End With
    End If
  End If
Next
End Sub
Fichier joint.

A+
 

Pièces jointes

  • charlie cellule verouillée VBA(1).xlsm
    17.7 KB · Affichages: 52

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 838
dernier inscrit
Christelle.B86