Changer couleur de fond si modification dans une cellule
Jerome -
Bonjour à tous,
J'espère que vous allez bien ! Je viens faire appel à votre aide car je rencontre une difficulté sur Excel. J'ai un fichier partagé (avec des cellules qui ont la couleur de remplissage jaune en fond) et je souhaiterais que dès que quelqu'un a fait une modification sur une cellule qui a une couleur de remplissage jaune, la cellule se modifie avec une couleur de remplissage blanche et ce peu importe ce qui a été modifié.
Exemple :
Sur la plage A1:P52 certaines cellules ont une couleur de remplissage jaune, mais pas toutes (ex les titres). Si une personne modifie la cellule A3 (qui a une couleur de remplissage jaune), je souhaiterais que la couleur de remplissage devienne blanche car la cellule a été modifiée.
Est ce que cela vous semble réalisable ?
Un graaand merci pour votre aide,
Amicalement
- Changer couleur de fond si modification dans une cellule
- Changer dns - Guide
- Excel cellule couleur si condition texte - Guide
- Suivi de modification word - Guide
- Excel somme si couleur cellule - Guide
- Aller à la ligne dans une cellule excel - Guide
10 réponses
Bonjour CCM81,
Merci pour votre réponse. Auriez vous une idée de codes ? Je ne vois pas trop comment l'écrire ? Et surtout comme les cellules n'auront pas le même texte dans chaque cellule, comment peut il d'avoir qu'il y a eu une modification ?
Merci pour votre aide
Amicalement
Bonjour
Le code est dans le module de la feuille à traiter (Alt-F11 pour y accéder)
https://www.cjoint.com/c/LKbk2a1zPtB
Cdlmnt
Bonjour CCM81, Franchement c'est génial et merci pour le temps et le fichier. La seule petite différence c'est que mon fichier au départ contient déjà une information, elle n'est pas vide. C'est la modification de la donnée qui transforme le remplissage de fond. Je n'ai pas réussi à modifier le code pour qu'ils correspondent à mon besoin. Je vous envoie mon fichier si vous avez encore un peu de temps à accorder à mon souci ? (Onglet 31 10 2022) https://www.cjoint.com/c/LKbmHeqSVqv Encore merci pour votre aide Amicalement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionBonjour CCM81, Un grand merci et désolé pour mon précédant message. Ca fonctionne super bien sauf que quand je reprends le code dans mon fichier ça ne fonctionne pas ? Je vous le mets ci dessous au cas ou vous aurie un peu de temps à m'accorder (Onglet 31 10 2022) c'est l'exemple. Et pour précision, je souhaiterais que ça fonctionne sur plusieurs feuilles si possible ? https://www.cjoint.com/c/LKbmHeqSVqv Encore un super grand merci pour votre aide et pour le temps déjà accordé et celui que vous pourrez y consacrer Amicalement
1. La seule petite différence c'est que mon fichier au départ contient déjà une information, elle n'est pas vide. C'est la modification de la donnée qui transforme le remplissage de fond.
Pas d'importance, j'ai eu la flemme de remplir la plage (ou je n'ai pas compris ta question)
2. Pour intégrer le code
Clic-droit sur l'onglet de la feuille à traiter / Visualiser le code / Copier tout le code / Modifier la plage concernée
Const plage = "A1:P75"
3. Fichier / Enregistrer sous / Type .xlsm (... prenant en charge les macros)
RQ1. Je ne te renvoie pas ton fichier, j'ai un vieil excel 2003 et le convertisseur 2007>2003 lui fait prendre beaucoup de volume.
RQ2. La macro va s'appliquer aussi aux cellules en bleu.
RQ3. Code modifié pour prendre en compte les cellules fusionnées (rarement une bonne idée, surtout s'il y a des macros à l'oeuvre)
Option Explicit Const plage = "A1:P75" Dim a Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Intersect(Target, Range(plage)) Is Nothing Then If Target.Cells(1, 1).Value <> a Then Target.Interior.ColorIndex = xlNone End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range(plage)) Is Nothing Then a = Target.Cells(1, 1).Value End If End Sub
Cdlmnt
FORMIDABLEEEEEEEEEEEEE c'est parfait. Et merci pour l'information pour ajouter le code, je ne savais pas qu'on pouvait l'ajouter à chaque onglet ainsi. Effectivement erreur de débutant pour l'enregistrement bien penser à mettre prendre en charge les macros :-) Pour les cellules bleues aucun souci c'est pas changé être modifiée Encore merci pour tout :-)
FORMIDABLEEEEEEEEEEEEE c'est parfait. Et merci pour l'information pour ajouter le code, je ne savais pas qu'on pouvait l'ajouter à chaque onglet ainsi. Effectivement erreur de débutant pour l'enregistrement bien penser à mettre prendre en charge les macros :-) Pour les cellules bleues aucun souci c'est pas changé être modifiée Encore merci pour tout :-)
Et pour ne pas appliquer le traitement aux cellules non-jaunes
Option Explicit Const plage = "A1:P75" Const jaune = 6 Dim a Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Interior.ColorIndex <> jaune Then Exit Sub If Not Intersect(Target, Range(plage)) Is Nothing Then If Target.Cells(1, 1).Value <> a Then Target.Interior.ColorIndex = xlNone End If End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range(plage)) Is Nothing Then a = Target.Cells(1, 1).Value End If End Sub
Cdlmnt
je ne savais pas qu'on pouvait l'ajouter à chaque onglet ainsi
Pas prévu ça ! Si tu veux appliquer la macro à chacun des onglets, inutile de copier le code dans chacun des modules de feuilles. Il te faut placer le code (un peu modifié) dans le module du Workbook
Option Explicit Const plage = "A1:P100" Const jaune = 6 Dim a Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Interior.ColorIndex <> jaune Then Exit Sub If Not Intersect(Target, Range(plage)) Is Nothing Then If Target.Cells(1, 1).Value <> a Then Target.Interior.ColorIndex = xlNone End If End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Not Intersect(Target, Range(plage)) Is Nothing Then a = Target.Cells(1, 1).Value End If End Sub
voir et exemple
https://www.cjoint.com/c/LKboDCbfnPB
Cdlmnt