Changer couleur de fond si modification dans une cellule

Fermé
Jerome - 31 oct. 2022 à 18:33
 Jerome - 2 nov. 2022 à 17:31

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

A voir également:

10 réponses

ccm81 Messages postés 10860 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 mai 2024 2 406
31 oct. 2022 à 20:24

Bonjour

Possible avec macro

Cdlmnt

0

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 

0
ccm81 Messages postés 10860 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 mai 2024 2 406
Modifié le 1 nov. 2022 à 11:54

Bonjour

Le code est dans le module de la feuille à traiter (Alt-F11 pour y accéder)

https://www.cjoint.com/c/LKbk2a1zPtB

Cdlmnt

0

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

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question

Bonjour 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

0
ccm81 Messages postés 10860 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 mai 2024 2 406
1 nov. 2022 à 14:07

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

0

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 :-)

0

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 :-)

0
ccm81 Messages postés 10860 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 mai 2024 2 406
1 nov. 2022 à 15:12

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

0
ccm81 Messages postés 10860 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 mai 2024 2 406
Modifié le 1 nov. 2022 à 15:39

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

0

Top merci ++++++++++++++++++++++++ :-)

0