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

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 !
 

Dudu2

XLDnaute Barbatruc
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

  • Classeur1.xlsm
    20.2 KB · Affichages: 7
Dernière édition:

meunierceline78

XLDnaute Nouveau
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
 

Dudu2

XLDnaute Barbatruc
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:

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…