Changer couleur de fond si modification dans une cellule

Jerome -  
 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

10 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     

    Bonjour

    Possible avec macro

    Cdlmnt

    0
  2. Jerome
     

    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
  3. Jerome
     

    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Jerome
     

    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
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     

    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
  7. Jerome
     

    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
  8. Jerome
     

    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
  9. ccm81 Messages postés 11033 Statut Membre 2 434
     

    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
  10. ccm81 Messages postés 11033 Statut Membre 2 434
     

    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. Jerome
       

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

      0