Microsoft 365 mise en forme conditionnelle : choisir la couleur d'une autre cellule

deuxnid

XLDnaute Nouveau
Bonjour, je vais essayer d’être clair car pas sur que ce soit simple à rédiger.

Je voudrais que pour des cellules données si celle ci contienne un texte précis un mise en forme soit effectué et que cette mise en forme soit une couleur.
Cette couleur sera récupéré par la couleur d'une autre cellule.
Ex si la cas A3 contient le texte "Repas" alors cette cellule aura la même couleur que la cellule B12.
Je ne sais pas si c'est simple ou compliqué du coup ...
Merci d'avance !
 

deuxnid

XLDnaute Nouveau
Bonjour, je ne peux pas fournir le fichier d'origine.
La "B12" elle a une couleur définie par l’opérateur, elle n'est pas définie par une règle.

Ajout : je viens de créer un fichier montrant le résultat voulu.
Si la case ne contient pas "repas" elle doit rester blanche.
Merci
 

Pièces jointes

  • test.xlsx
    8.8 KB · Affichages: 5
Dernière édition:

CHRIS1945

XLDnaute Occasionnel
Bonjour Deuxnid et djidji59430,
Je venais justement de faire le même classeur test que je joins.
Tu as l'occasion de choisir entre Diner et Repas en A3 et puis tu cliques sur le bouton et la couleur évoluera en fonction de la présence de Repas ou pas.
Cela se fait grâce à une petite macro que tu peux adapter.
Mais il faut que tu saches que dans Excel il existe deux systèmes de couleur et donc celui utilisé est le plus simple. Si ton modèle utilise l'autre, il faudra adapter.
Bonne continuation
Chris
 

Pièces jointes

  • MAJ_COULEUR.xlsm
    17.5 KB · Affichages: 8

mapomme

XLDnaute Barbatruc
Bonsoir à tous :),

Un exemple plus vaste de ce qu'on peut faire.

Je n'ai pas choisi une mise à jour automatique car un changement de couleur ne déclenche aucun évènement. Cliquez sur le bouton multicolore.
 

Pièces jointes

  • deuxnid- colorier- v1.xlsm
    16.9 KB · Affichages: 14

deuxnid

XLDnaute Nouveau
Bonjour, merci à tous pour ces fichiers. Je suis embêté pour le moment car même en activant les macros elles sont bloqués pour des raisons de sécurité (pc pro) car elles viennent d'internet ....
Serait il possible d'avoir le contenu des macros sous forme de texte pour essayer de le rajouter manuellement et essayer ?
 

mapomme

XLDnaute Barbatruc
Bonsoir @deuxnid :) ,

Voici une capture d'écran pour s’imaginer les choses et aussi le texte de la macro.

Texte de la macro dans le module de la feuille concernée :
VB:
Sub colorier()
Dim t, x As Range, n&
   t = Range("a12:a14")
   Application.ScreenUpdating = False
   Range("a2:L9").Interior.ColorIndex = xlColorIndexNone
   For Each x In Range("a2:L9").Cells
      If x <> "" Then
        n = Application.IfError(Application.Match(x, t, 0), 0)
        If n > 0 Then x.Interior.Color = Range("a12:a14")(n, 1).Interior.Color
      End If
   Next x
End Sub

1727193653567.png
 

laurent950

XLDnaute Barbatruc
Bonjour le Forum

Une variante avec la méthode objet et SpecialCells(xlCellTypeConstants) permet de ne sélectionner que les cellules non vides d'une plage. Cette approche améliore l'efficacité du code en évitant de parcourir toutes les cellules, ce qui est particulièrement utile lorsque l'on travaille avec de grandes plages de données. Ainsi, on peut se concentrer uniquement sur les cellules contenant des valeurs, rendant le traitement plus rapide et plus efficace.

VB:
Sub colorier()
    Dim x As Range, res As Variant
    Application.ScreenUpdating = False
    Range("a2:L9").Interior.ColorIndex = xlColorIndexNone
    On Error Resume Next ' Gérer le cas où aucune cellule non vide n'est trouvée
    For Each x In Range("a2:L9").SpecialCells(xlCellTypeConstants)
        res = Application.Match(x, Range("a12:a14"), 0)
        If Not IsError(res) Then x.Interior.Color = Range("a12:a14")(res).Interior.Color
    Next x
    On Error GoTo 0 ' Désactiver la gestion d'erreur automatique
    Application.ScreenUpdating = True ' Réactiver la mise à jour de l'écran
End Sub
 

CHRIS1945

XLDnaute Occasionnel
Bonjour à tous,
Pour débloquer les macros lors de l'importation d'un classeur :
1 utiliser un éditeur de fichier
2 aller dans les propriétés
3 en bas du tableau il faut cocher la case




1727197125935.png
I
1727197352151.png


Il reste à enregistrer le classeur et les macros devaient fonctionner
Bonne continuation
Chris
 

Pièces jointes

  • 1727197286265.png
    1727197286265.png
    788 bytes · Affichages: 3

deuxnid

XLDnaute Nouveau

Discussions similaires

Statistiques des forums

Discussions
315 118
Messages
2 116 424
Membres
112 745
dernier inscrit
mcanas