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

  • Initiateur de la discussion Initiateur de la discussion Patron28
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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
 
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
 
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 D2😀11 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

Bonjour.
Non je crois que le problème venait de ce qu'il fallait absolument quitter la plage D2😀11 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.
 
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
 
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:
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é.
 
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:
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 D2😀11 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 D2😀11 et cela reste comme cela.
Si il n'y a rien dans une case D2😀11 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 D2😀11 venait d'une mise en forme conditionnelle. Si cela n'est pas possible, je ferais avec la macro mise a jour.

Merci

Parton28
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
462
Retour