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

Microsoft 365 Verrouiller des cellules qui sont en couleur suite à une mise en forme conditionnelle

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 !

meunierceline78

XLDnaute Nouveau
Bonjour à tous,

Toute nouvelle dans l'utilisation d'Excel, je cherche à verrouiller des cellules qui sont en couleur suite à une mise en forme conditionnelle. Celles qui restent sans remplissage doivent pouvoir être remplies grâce à une liste déroulante.
Pour le moment, j'ai réussi à : 1) créer ma liste déroulante pour toutes mes cellules 2) faire la mise en forme conditionnelle pour ce qui est du remplissage des cellules
Ce que je ne sais pas faire : verrouiller les cellules qui sont mises en couleur.
Est-ce possible ? Quelqu'un peut-il m'aider ?
Merci par avance à tous ceux qui prendront le temps de me répondre ...
Bonne soirée !
 
Bonjour,
  1. Verrouiller des cellules colorées par une MFC ce n'est pas simple car le propre de la MFC c'est de colorer les cellules lorsqu'elles prennent la valeur désignée d'une manière ou d'une autre dans la MFC.
    C'est donc un phénomène dynamique qui de plus ne donne lieu à aucun évènement particulier qui permettrait de faire du code pour l'intercepter.

  2. Verrouiller des cellules cela veut dire déverrouiller toutes les autres et placer un mot de passe (fut-il vide) sur la feuille.
Donc je ne vois qu'une seule solution c'est faire du code VBA sur la feuille et d'intercepter un changement dans une cellule colorée (MFC ou couleur placée volontairement) ou colorée d'une couleur particulière par la MFC pour annuler la modification.
VB:
Option Explicit

Private Const CouleurMFC = vbYellow '-1 pour toutes les couleur

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Cellule As Range
    
    For Each Cellule In Target.Cells
        If CouleurMFC = -1 Then
            If Not Cellule.DisplayFormat.Interior.ColorIndex = xlNone Then Exit For
        Else
            If Cellule.DisplayFormat.Interior.Color = CouleurMFC Then Exit For
        End If
    Next Cellule
    
    If Not Cellule Is Nothing Then
        MsgBox "On ne peut pas modifier une cellule colorée"
        Application.EnableEvents = False
        Application.Undo
        Application.EnableEvents = True
    End If
End Sub
 

Pièces jointes

Dernière édition:
Bonsoir,
Merci beaucoup pour votre réponse et ces lignes de code !
Je ne comprends rien au code VBA, mais j'ai copié celui-ci dans This Workbook, et .. rien ne se passe. Mes cellules ne sont pas verrouillées... Je dois mal faire les choses 😉
 
Bonjour,
Il faut copier ce code dans la Feuille concernée, pas dans le Workbook.
S'il y a plusieurs feuilles concernées, dites-le moi, je sortirai le code dans un Module.
D'autre part, pour la couleur j'ai défini vbYellow qui est le jaune "standard" sur la palette du ruban.
Si vous souhaitez une autre couleur envoyez-moi un échantillon sur une feuille pour que je trouve son numéro.
Si vous souhaitez toutes les couleurs, placez -1 en lieu et place de vbYellow.
Évidemment, à la fin, enregistrez avec l'extension xlsm pour inclure la Macro dans le classeur.

 
Dernière édition:
- 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
4
Affichages
131
Réponses
2
Affichages
101
Réponses
6
Affichages
158
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…