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

Verouiller une ligne quand une des cellules est "ok"

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

nat54

XLDnaute Barbatruc
Bonjour,

Sur une feuille protégé, je laisse libre certaines cellules jaunes
je souhaiterai lorsque "ok" est saisi dans la cellule D2, la ligne 2 de la feuille active soit verrouillée

comment réaliser cela ?

merci d'avance

Nat

ps : la PJ est ultra simplifiée
 

Pièces jointes

Re : Verouiller une ligne quand une des cellules est "ok"

Bonjour nat54,

Essayez cette macro 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 Intersect(Target, Columns(4)) Is Nothing Then Exit Sub
Dim cel As Range
Unprotect '+éventuellement mot de passe
For Each cel In Intersect(Target, Columns(4), Me.UsedRange) 'en cas de sélection d'une plage
 If UCase(cel) = "OK" Then cel.EntireRow.Locked = True
Next
Protect '+éventuellement mot de passe
End Sub

A+
 
Re : Verouiller une ligne quand une des cellules est "ok"

Bonjour nat54

Voici une première proposition :

Code:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal selection As Range)
    
    
    If selection.Column = 4 Then 'réduction du test à la colonne
        If selection.Rows.Count = 1 And selection.Columns.Count = 1 Then
            If LCase(selection.Value) = "ok" Then
                 
                ActiveSheet.Unprotect
                Rows(selection.Row).Locked = True
                ActiveSheet.Protect
            Else
                'si l'on veut enlever la protection :
                'ActiveSheet.Unprotect
                'Rows(selection.Row).Locked = False
                'ActiveSheet.Protect
           
            
            End If
        End If
    End If
End Sub

Il reste des choses à améliorer, notament sur la selection de la cellule, où je verrais bien un test de de-sélection.

Olivier

EDIT : salut job75. Désolé du téléscopage, pas fait assez de refresh
 
Re : Verouiller une ligne quand une des cellules est "ok"

Bonjour

Ca marche très bien sur le fichier test
Je vais essayer sur le fichier réel
 
Re : Verouiller une ligne quand une des cellules est "ok"

Re,

ca aurait été trop beau ...

ca marche sur un des deux onglets (le 2nd)
mais le 1er ne marche pas
est-ce possible que cela soit dû aux cellules fusionnées ?
 

Pièces jointes

Re : Verouiller une ligne quand une des cellules est "ok"

Bonjour

Une façon de contourner le problème de la cellule fusionner :

Code:
If UCase(cel) = "FIN" Then Range(Cells(cel.Row, 2), Cells(cel.Row, 37)).Locked = True

Attention, si le 'fin' doit être vérouillé aussi, il faut mettre 38.

Cdt
Olivier
 
Re : Verouiller une ligne quand une des cellules est "ok"

Bonjour nat54,

En effet c'est dû aux cellules fusionnées, c'est facile à vérifier...

Alors pour verrouiller uniquement les cellules jaunes (colonnes S:AK) :

Code:
If UCase(cel) = "FIN" Then [COLOR="Red"]Intersect(cel.EntireRow, Columns("S:AK")).[/COLOR]Locked = True

Edit : salut Odesta, pas rafraîchi...

A+
 
Dernière édition:
Re : Verouiller une ligne quand une des cellules est "ok"


Nickel !

J'ai verrouillé toutes les cellules de la ligne y compris celle qui sert de verrou

Merci !
 
- 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
5
Affichages
265
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…