Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Mise en couleur cellule par rapport à une autre cellule.

Patron28

XLDnaute Nouveau
Bonjour,

J'aimerai réaliser la mise en couleur de cellules par rapport à d'autres cellules avec condition, mais j'ai un souci pour réaliser cela. Je voudrais utiliser la mise en forme conditionnel ou la fonction si mais je bloque.

J'aimerai sans macro. Voir le fichier en pièce jointe.

Voici l'explication : Si la cellule d2=10, mettre en couleur toutes les cellules du tableau g2/g20 qui corresponde à d2 de la même couleur que D2, en sachant que la couleur de D2 peut changer

Si la cellule D4=5, mettre en couleur toutes les cellules du tableau G2/G20 qui corresponde à D4 de la même couleur que D4.

ETC........

Si cela n’est pas possible sans macro, alors ok, mais ce fichier doit être inséré dans un autre classeur avec plusieurs feuilles, faudra juste m’expliquer comment faire fonctionner la macro.

Merci pour votre aide.

Bonne journée

Patron28
 

Pièces jointes

  • couleuressai14082020.xlsx
    10.3 KB · Affichages: 50

soan

XLDnaute Barbatruc
Inactif
Bonjour Patron28,

Regarde d'abord le fichier de mon post précédent, puis celui-ci.

Si tu compares les 2 codes VBA, tu verras que je l'ai optimisé : il y a une partie commune aux 2 subs qui était présente avant 2× et qui est maintenant présente une seule fois.

Tu pourras voir que cette optimisation a nécessité une petite « réorganisation » du code VBA.

L'utilisation est la même ; si tu as besoin d'explications, n'hésite pas à demander.

soan
 

Pièces jointes

  • couleuressai14082020ter.xlsm
    19.8 KB · Affichages: 9

Patron28

XLDnaute Nouveau
Re Bonjour Soan,

Je viens de tester les fichiers, grand merci, cela fonctionne bien et cela est plus rapide que le premier.

Je vais voir comment je peux l'insérer dans mon autre fichier qui comporte plusieurs feuilles déjà et macros.

Merci pour ton aide

Patron28
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Une proposition de code dans le module de la feuille qui réagirait au changement de la couleur de remplissage en D2:D11 :
VB:
Option Explicit
Private ÇaTourne As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
   ChangerLesCouleurs
   End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Dim Couleur As Long
   If Intersect(Me.[D2:D11], Target) Is Nothing Then ÇaTourne = False: Exit Sub
   If ÇaTourne Then Exit Sub
   Couleur = Target.Interior.Color: ÇaTourne = True
   While ÇaTourne: DoEvents
      If Target.Interior.Color <> Couleur Then
         ChangerLesCouleurs
         Couleur = Target.Interior.Color: End If
      Wend
   End Sub
Sub ChangerLesCouleurs()
   Dim Rng As Range, TCoul(1 To 10), Cel As Range
   Set Rng = Range("D2:D11")
   For Each Cel In Rng
      TCoul(Cel.Value) = Cel.Interior.Color
      Next Cel
   Set Rng = Range("G2:Q11")
   For Each Cel In Rng
      Cel.Interior.Color = TCoul(Cel.Value)
      Next Cel
   End Sub
 

Patron28

XLDnaute Nouveau
Bonjour Dranreb,

J'ai fais des tests avec ta proposition,cela fonctionne mais il y a un souci avec un temps d'attente.
Je m'explique si je colorie la case D2, tout les mêmes chiffres que D2 se colorie de la même couleur que D2 dans le tableau G2:Q11, mais quand je colorie D3 d'une autre couleur là rien ne se passe, c'est seulement quand je colorie d'autres case que la mise en couleur se passe!
y a t'il un temps d'attente pour la macro ? ( fichier en pièce jointe ).

Une autre question, serait-il possible de faire fonctionner la macro si la couleur des cases D211 vient d'une mise en forme conditionnelle ? ( exemple avec la colonne C, si dans la colonne D il y a le même chiffre en colonne C le colorier de la même couleur que la case C2:C7 par une mise en forme conditionnelle et colorie en même temps dans le tableau G2:Q11).

Merci pour ta réponse

Bonne journée

Patron28
 

Pièces jointes

  • couleuressai14082020Dranreb.xlsm
    18.5 KB · Affichages: 7

Dranreb

XLDnaute Barbatruc
Bonjour.
Non je crois que le problème venait de ce qu'il fallait absolument quitter la plage D211 avant d'y revenir pour changer une autre couleur. Je vais voir s'il est possible d'y remédier.
Non, si ça vient d'une MFC c'est à revoir complètement puisque la couleur n'est plus une information en soit, c'est la condition de la FMC qui devient ce sur quoi il faut s'appuyer.
 

Dranreb

XLDnaute Barbatruc
Comme ça ça va mieux on dirait :
VB:
Option Explicit
Private Cible As Interior, Couleur As Long, ÇaTourne As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
   ChangerLesCouleurs
   End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   If Intersect(Me.[D2:D11], Target) Is Nothing Then ÇaTourne = False: Exit Sub
   Set Cible = Target.Interior: Couleur = Cible.Color
   If ÇaTourne Then Exit Sub
   ÇaTourne = True
   While ÇaTourne: DoEvents
      If Cible.Color <> Couleur Then
         Couleur = Cible.Color: ChangerLesCouleurs: End If: Wend
   End Sub
Sub ChangerLesCouleurs()
   Dim Rng As Range, TCoul(1 To 10), Cel As Range
   Set Rng = Range("D2:D11")
   For Each Cel In Rng
      TCoul(Cel.Value) = Cel.Interior.Color
      Next Cel
   Set Rng = Range("G2:Q11")
   For Each Cel In Rng
      Cel.Interior.Color = TCoul(Cel.Value)
      Next Cel
   End Sub
 

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
chez moi les cells se colorient en noir des un changement dans "D"
mais j'ai bien peur d'avoir perdu le sens de cette discussion

en effet j'ai posé une question au tout debut(post#3) et elle n'a pas eu de réponse concrète

je résume
si D2=10 alors les cells de G à Q qui ont la même valeur se colorient de la même couleur que D2
si D4=5 alors les cells de G à Q qui ont la même valeur se colorient de la même couleur que D4
etc.. etc..
ok
mais si aucune valeur est identique on fait quoi
si D2= D6 par exemple on fait quoi quelle couleur on prend
etc..etc.. car il y a bien d'autre possibilité
qui me fait penser au serpent qui se mort la queue
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Un changement de valeur, c'est normal: ce sont partout exactement les valeurs 1 à 10 sans doublon, alors si vous changer un numéro, celui qu'il y avait avant n'a plus de couleur attribuée. Je pourrais peut être assumer l'interversion, mais ça n'a pas été demandé.
 

patricktoulon

XLDnaute Barbatruc
Bonjour Dranreb
Je pourrais peut être assumer l'interversion, mais ça n'a pas été demandé.
je crois que tu met le doigt dessus sur ce que j'essaie de pointer du doigt

en tout cas quoi que je fasse le interior.color est black ou que ce soit

ce que j'essaie d'expliquer en fait:

supposons que
je tape 5 en D4 ;ok les couleurs se mettent en place
je tape ensuite en D2 5 ;elle ne fait pas 10 donc la couleur doit être enlevée
oui mais le problème elles sont égales a D4
est ce que vous imaginez l'usine a gaz qu'il va falloir coder pour toute les possibilités
si je ne me trompe pas ça fait 10^10 possibilités
et ben mon amis t ' pas arrivé
je ne parle même pas de la possibilité ou il y aurait 3 valeurs identique en "D" avec 10^10 on est loin du compte a mon avis
si il n'y a pas (d'aller/retour) cette discussion n'a aucun sens
 
Dernière édition:

Patron28

XLDnaute Nouveau
Bonjour,

Merci Dranreb, la mise a jour de ta macro fonctionne très bien et plus de temps d'attente, Merci à toi.

Pour Patrick; Pour explique un peut plus et que cela ne devienne pas une usine à Gaz.
En Colonne D211 il n'y aura pas de doublon, ni triplon,Etc......... les chiffres seront tous différents, il y aura parfois la même couleur ça oui.
Dans l'exemple du fichier, il n'y a pas de doublon en D211 et cela reste comme cela.
Si il n'y a rien dans une case D211 ont ne fait rien.
Il n'y aura pas non plus de priorité entre D2,D3,D4,..........etc.

La seul chose et j'aimerai ne pas abusé de votre temps et aide, c'est comme expliqué plus haut,
si la couleur de D211 venait d'une mise en forme conditionnelle. Si cela n'est pas possible, je ferais avec la macro mise a jour.

Merci

Parton28
 

patricktoulon

XLDnaute Barbatruc
si ca vient d'une MFC c'est displayformat.interior.color valable a partir de excel 2010 je crois

donc si je comprends bien en D2 c'est soit 10 ou rien c'est ca ?
D4= 5 ou rien
etc..etc..
et pareil pour les autres
 

Dranreb

XLDnaute Barbatruc
Ben comme dit si la couleur vient d'une MFC c'est sur sa condition qu'il faut se baser, s'y précipiter avidement et ne plus tenir compte de la couleur, ou même en mettre une aussi sur la plage d'application, tant qu'à faire !
 

Patron28

XLDnaute Nouveau
En D2 c'est un chiffre de 1 à 10 , ou rien
En D4 c'est un chiffre de 1 à 10 , ou rien mais en aucun cas les mêmes chiffres que D2.

En D211 se sont des chiffres de 1 à 10 ou rien. jamais de doublon
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…