Blocage changement couleur cellule

Bonjour,

Je suis nouveau sur le forum et nouveau dans le monde du VBA également.

Je teste actuellement quelques fonctions du pack complémentaire XLP.

Il y a dans ce pack une fonction qui permet de comptabiliser le contenu de certaines cellules coloré avec la fonction NB_SI_COULEUR. Cependant j'aimerais pouvoir bloquer le changement de couleur de certaines cellules. J'ai essayé de verrouiller la feuille en passant par le format des cellules, mais rien à faire les cellules verrouiller permette malgré tout le changement de couleur de celle-ci. Serait-il possible en VBA de créer une fonction capable de verrouiller le changement de couleur que d'une plage de cellule?

Merci de votre indulgence et de vos réponses.

Bonjour,

Un essai en bidouillant:

dans le code de la feuille

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("F6:G6").Interior.Color = RGB(255, 0, 0)
End Sub

Changer F6:G6 par la plage souhaitée et les valeurs RGB par la couleur.

Il est possible de changer la couleur de fond d'une cellule mais elle repassera dans l'ancienne couleur lors d'un clic sur une autre cellule

*Edit: et après revérification, c'est possible de verrouiller le changement des couleurs d'une plage de cellule:

déverrouiller l'ensemble des cellules

verrouiller les cellules qui doivent rester de la même couleur

protéger la feuille en cochant "format de cellule" et "sélectionner les cellules déverrouillées" (! décocher "sélectionner les cellules verrouillées !)

Bonjour,

Tout d'abord merci de votre réponse.

J'ai pu tester le morceau de code que vous m'aviez fourni, mais j'ai une erreur.

image

Si je passe par la deuxième solution proposée je ne peux plus entré de donnée dans les cellules verrouillées, ce qui pause un soucie...

surement à cause d'un autre code

Il faudrait le document ou un document exemple pour adapter au mieux la solution, il y a aussi surement quelque chose à faire via MFC

Je vous transfert le document

Je rencontre également un soucie avec le pack de fonctions complémentaires XLP. Il fonctionne une fois sur deux, et à un comportement différent entre des pc différents pourtant le pack est installé au même endroit sur les postes.

Pour le pack on regardera plus tard, ou il faudra faire un autre post car ce sera surement Sébastien le mieux placé pour répondre.

Quels cellules doivent rester dans leurs couleurs d'origines ?

Un exemple avec la cellule A49 qui reste en rouge:

C'est exactement le résultat rechercher avec la cellule A49 mais est il possible de le mettre transparent au lieu du blanc lorsqu'on clique dessus? Je pousse un peut loin

Normalement toutes les plages de cellule colorées d'origine devrait rester de leur couleur d'origine. Sauf les plages :

C8:E14;G8:I14;C16:E16;G16:I16;G17:I22;C18:E22;C24:E27;G24:I27;C29:E31;G29:I31;C33:E40;G33:I40

En quelques sortes au lieu de déclarer les cellules fixent, j'aimerais déclarer celles qui sont variables? Est ce possible tu penses?

Pour le pack je vais suivre un tuto trouvé sur le site je posterais un nouveau sujet si ca persiste. Merci quand même

C'est ce que je craignais, mais de ce que j'ai comprit les plages sont identiques sur chaque feuille et fixe ?

Pour le transparent je suppose que c'est lors du clic droit ?

Si oui, à copier dans chaque feuille :

Const PlageControl = "C8:E14,G8:I14,C16:E16,G16:I16,G17:I22,C18:E22,C24:E27,G24:I27,C29:E31,G29:I31,C33:E40,G33:I40"

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    Target.Interior.Color = xlNone
    Calculate
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Me.Range(PlageControl)) Is Nothing Then Exit Sub
   Target.Interior.Color = vbGreen
    Calculate

End Sub

("const PlageControl" est une constant déclaré, donc il n'y a pas de sub et end sub)

C'est bien ça, les plages sont identiques sur chaque feuille et fixe. S’il y a un changement, je le déclarerais dans le code de la page directement.

Tout à fait pour le transparent c'est lors du clic droit. Mais le soucie c'est que j'aimerais que lorsqu'on clique dans une cellule d'une plage qui n'est pas déclarée, la couleur qui y est reste, car la lorsque je clique droit sur une cellule d'une plage non déclarer le fond devient blanc et la couleur d'origine disparait.

Serait-il possible tu penses d'activer la coloration de cellule uniquement sur une plage de cellule? Comme fait pour la plage de cellule contrôlée?

Oui, on rajoute la même ligne de code sur le sub du clic droit :

Const PlageControl = "C8:E14,G8:I14,C16:E16,G16:I16,G17:I22,C18:E22,C24:E27,G24:I27,C29:E31,G29:I31,C33:E40,G33:I40"

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
 If Intersect(Target, Me.Range(PlageControl)) Is Nothing Then Exit Sub
    Target.Interior.Color = xlNone
    Calculate
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Intersect(Target, Me.Range(PlageControl)) Is Nothing Then Exit Sub
   Target.Interior.Color = vbGreen
    Calculate

End Sub

Super j'ai testé le code c'est exactement ca, merci beaucoup pour le temps accordé!

Rechercher des sujets similaires à "blocage changement couleur"