Changer couleur de fond si modification dans une cellule

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

10 réponses

  1. Bonjour

    Possible avec macro

    Cdlmnt

    0
    1. 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
      1. 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
        1. 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
          1. 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
            1. 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
              1. 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
                1. 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
                  1. 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
                    1. Top merci ++++++++++++++++++++++++ :-)

                      0