XL 2010 verrouiller une cellule dont la couleur est posée par Mise en Forme Conditionnelle

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

Ommagawi

XLDnaute Junior
Bonjour,
J'utilise ce code :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim Cel, Plage As Range
Set Plage = ActiveSheet.Range("B2:Y221")
ActiveSheet.Unprotect
For Each Cel In Plage
If Cel.Interior.ColorIndex <> -4142 Then
If Cel.Locked = False Then Cel.Locked = True
End If
Next
ActiveSheet.Protect
End Sub
Mais rien ne se produit !
Avez vous une solution ?
Merci
 
Bonjour,

Dans votre ligne de déclaration de variable, il ne suffit pas de mettre Range en bout de ligne pour que toutes les variables de la ligne soient déclarées en Range. (dans votre cas ce n'est pas très important que cel soit un variant)

Dans une procédure évènementielle de classeur il est toujours bien de contrôler le type de feuille passée à la procédure, car un classeur peut avoir des feuilles de travail, des feuilles graphiques et feuilles macro (rares aujourd'hui).

Voici une procédure qui tient compte de ces points. De plus pour le verrouillage des cellules je vous ai mis deux possibilités, une qui traitera toutes les cellules de la plage données en les verrouillant ou dévérouillant et une autre qui ne traitera QUE celles dont le format correspond au critères, laissant les autres dans leur état.

VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim Cel As Range, Plage As Range
    If Not TypeOf Sh Is Worksheet Then Exit Sub
    Set Plage = Sh.Range("B2:Y221")
    Sh.Unprotect
    For Each Cel In Plage
        '
        ' Si l'on veut verouiller UNIQUEMENT celles qui correspondent au critère
        ' et dévérouiller les autres décommenter la ligne suivante
        'Cel.Locked = Cel.DisplayFormat.Interior.ColorIndex <> -4142
        '
        ' si on veut traiter uniquement celles qui correspondent au critère
         If Cel.DisplayFormat.Interior.ColorIndex <> -4142 Then Cel.Locked = True
    Next
    Sh.Protect
End Sub

Cordialement

[Edition] Hello @chris 🙂 [/Edition]
 
Merci de votre contribution mais rien ne se produit.
Je joins mon fichier pour mieux comprendre.
Quand la formation est validée elle passe au vert.
Quand elle est annulée elle passe au rouge.
Je voudrai qu'une fois colorées, les lignes soient verrouillées automatiquement et qu'on ne puisse plus modifier les cellules colorées sauf si on déprotège la feuille.
Est ce possible ?
 

Pièces jointes

Bonjour,

Et la macro, elle est où ?

Je voudrai qu'une fois colorées, les lignes soient verrouillées automatiquement et qu'on ne puisse plus modifier les cellules colorées sauf si on déprotège la feuille.
Quand elle est validée ? Quand elle est annulée ? Les deux ? Quand la colonne ETAT n'est pas vide en fait ? Non ?

Voici un exemple qui verrouille les cellules de la ligne (colonne A à H ) lorsque H n'est plus vide.
Elle le fait au cas par cas sur changement de la valeur de ETAT.

A mon avis, cela va vite devenir pénible, cette protection au cas par cas.
Aussi je vous ai préparé une macro (dans le deuxième fichier) nommée 'Verrouiller' qui verrouille toutes les lignes dont la colonne ETAT contient quelque chose et dévérrouille éventuellement les autres.

Faites vos changements, cliquez sur le bouton 'Verrouillage - protection' et hop !



cordialement
 

Pièces jointes

Dernière édition:
Bonjour,

Dans quelle macro de quel fichier ?

Pour le v2 on change With .Range("A1").CurrentRegion par With .Range("A1:H5000")
Idem pour le premier fichier mais sans le point devant Range !

Surtout on essaie de comprendre comment fonctionne la macro et on fait ses propre tests avant de demander modification, sinon on restera toujours dépendant d'un clampin qui voudra peut-être bien nous aider.

Cordialement
 
- 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

Retour