Colorer cellule SI autre cellule
Bonjour,
Je souhaiterai savoir s'il est possible de colorer une cellule si son contenu apparaît dans une autre cellule ?
Exemple :
La première cellule contient "Bonjour".
La deuxième cellule contient "Bonjour Machin"
- > Colorer la première cellule si la deuxième cellule contient AU MOINS un mot de la première cellule.
- > Donc, SI la première cellule contient seulement "Bonjour" ou "Machin" (ou les deux), la colorer en vert. SI elle contient autre chose, la colorer en rouge.
Merci d'avance.
Bonjour mbbp, Nyb,
Tu peux aussi utiliser ça dans le cas où tu veux comparer à un terme que tu connais
=SI(NB.SI(B6;"Patrick*");1;0)Et après bricolage, si tu veux comparer deux valeurs (vérification si cellule vide avant, sinon il colorie quand il compare cellule vide-> cellule remplie)
=SI(ET(B5<>"";NB.SI(B6;B5 &"*"));1;0)Attention à placer des "$" pour figer le valeur que tu veux comparer (le défaut de cette fonction, c'est que je pense que tu n'aura que la valeur comparée qui va changer de couleur et je viens juste de remarquer que tu voulais que ta cellule à comparer change aussi de couleur.)
Merci pour vos réponses !
Autre question : Est-il possible de compter le nombre de cellules comportant un texte de couleur bleue ? Et d'afficher par la suite ce résultat dans une autre cellule ?
Un fichier de Amadéus qui traite sur le sujet (https://forum.excel-pratique.com/excel/compter-si-cellule-en-fond-verte-t15333.html)
Bonjour Timothe,
Merci pour ton fichier, seulement je ne souhaite pas compter uniquement les valeurs présentes dans les cellules colorées, mais compter le nombre de cellules colorées. Comme 3 cellules sont en bleu, 2 en jaune et 4 en vert...
Je me suis inspiré de ça
https://www.excel-pratique.com/fr/vba/couleurs.php
Visuellement sur ma feuille (N° renvoie le numéro d'index correspondant afin de faire la recherche de la couleur dans le VBA)
En Vba ça donne ça :
Sub Macro1()
Dim rouge As Integer, bleu As Integer, jaune As Integer
'
' Macro1 Macro
'
rouge = 0
bleu = 0
jaune = 0
For i = 1 To 9
If Cells(i, 1).Interior.ColorIndex = 3 Then
rouge = rouge + 1
ElseIf Cells(i, 1).Interior.ColorIndex = 23 Then
bleu = bleu + 1
ElseIf Cells(i, 1).Interior.ColorIndex = 6 Then
jaune = jaune + 1
End If
Next i
Cells(1, 4).Value = rouge
Cells(2, 4).Value = bleu
Cells(3, 4).Value = jaune
Cells(5, 4).Value = Cells(1, 1).Interior.ColorIndex
Cells(6, 4).Value = Cells(2, 1).Interior.ColorIndex
Cells(7, 4).Value = Cells(3, 1).Interior.ColorIndex
'
End SubMerci Timothe,
Est-il possible de faire de même, en remplaçant le fait de compter le nombre de cellules de telle couleur par le nombre de cellule contenant du texte d'une telle couleur ?
Ex: Compter le nombre de cellules contenant du texte en bleu, du texte en rouge et du texte en vert... ?
Merci d'avance.
PS: je souhaiterais pouvoir appliquer ce principe avec ces deux couleurs (voir image suivante) :
On peut, par contre, comme tu va le voir sur l'image, il ne semble pas considérer le rouge foncé comme différent du rouge précedent (voir N° renvoyé), le bleu par contre il voit la nuance (si tu as vraiment besoin de faire la différence tu peux y aller en mode bourrin avec ça ^^ :
Voici un exemple similaire avec Color :
Sub couleurs()
'Couleur du texte en A1 : RGB(50, 200, 100)
Range("A1").Font.Color = RGB(50, 200, 100)
End Sub
La couleur ici est : RGB(50, 200, 100)
RGB en français signifie Rouge-Vert-Bleu (RVB), les valeurs vont de 0 à 255 pour chaque couleur.
Quelques exemples de couleurs pour mieux comprendre :
•RGB(0, 0, 0) : noir
•RGB(255, 255, 255) : blanc
•RGB(255, 0, 0) : rouge
•RGB(0, 255, 0) : vert
•RGB(0, 0, 255) : bleu
Sinon voilà le screen et le code (oui j'ai changé 3 mots, mais j'étais plus sur le PC c'était compliqué de le faire à distance ^^)
Sub Macro1()
Dim rougef As Integer, bleum As Integer
bleum = 0
rougef = 0
For i = 12 To 20
If Cells(i, 6).Font.ColorIndex = 55 Then
bleum = bleum + 1
ElseIf Cells(i, 6).Font.ColorIndex = 3 Then
rougef = rougef + 1
End If
Next i
Cells(16, 4).Value = bleum
Cells(17, 4).Value = rougef
Cells(13, 4).Value = Cells(13, 1).Interior.ColorIndex
Cells(14, 4).Value = Cells(14, 1).Interior.ColorIndex
'
End SubMerci Timothe,
Je ne suis pas très doué sur Excel, je fais comment pour exploiter ton code ?
Merci.
Sub Macro1()
'J'appelle ce code Macro1, cela permet à Excel de s'y rendre quand on l'appelle et d'en effectuer le contenu
Dim rougef As Integer, bleum As Integer
'Je déclare deux variables, ici je lui dit que les variable rougef et bleuf contiennent des valeurs numériques (on veut faire des "compteurs", il n'y aura que des nombres entiers (0,1,2,3,4,... Pas de chiffres à virgules) à l'intérieur. Le mieux étant de faire des noms de variables révélateurs pour ne pas s'embrouiller si le code est long.
bleum = 0
rougef = 0
'Je lui dit d'initialiser les varibales bleuf et rougef à 0, on veut connaître le nombre de cellules
'avec écriture de couleur, on commencera à compter à 0For i = 12 To 20
If Cells(i, 6).Font.ColorIndex = 55 Then
bleum = bleum + 1
ElseIf Cells(i, 6).Font.ColorIndex = 3 Then
rougef = rougef + 1
End If
Next i
'Ici j'effectue la partie qui va permettre de compter le nombre de cellules écrites d'une certaine couleur. Pour cela je lui demande de tester chaques cellules de F12 à F20 (colonne qui m'intéresse), si jamais il trouve une cellule où l'écriture et de la couleur recherchée il incrémente la variable correspondante, sinon il passe à la cellule suivante. A la fin de la boucle, les variables bleum et rougef renverront le nombre de fois où la boucle à croisé une cellule correspondante.Cells(16, 4).Value = bleum
Cells(17, 4).Value = rougef
Cells(13, 4).Value = Cells(13, 1).Interior.ColorIndex
Cells(14, 4).Value = Cells(14, 1).Interior.ColorIndex
'Ici j'attribue à la cellule D16 la valeur de la variable bleum (renvoie donc le compte total de cellules qui avait une écriture bleu marine), la cellule D17 renvoie le nombre de cellule avec écriture rouge foncée.
'Les deux autres lignes me servent à connaître le N° d'index (couleur) qui correspond à bleu marine et rouge foncé (dans les cellules D13 et D14)
End Sub
'enfin je lui dit que j'ai terminéY a d'autres manières de le coder mais ça reste relativement simple, avec les explications tu devrais comprendre la démarche
