Colorer des cellules à l'aide d'une macro

balata9 -  
ben13.51 Messages postés 115 Statut Membre -
Bonjour tout le monde,

J'essaye de réaliser une macro permettant de changer la couleur de certaines cellules si celles-ci portent le même nom que d'autres cellules.

En fait j'aimerais que si les cellules de la colonne B à partir de la ligne 26 (la taille de la colonne peut changer) ont la même valeur que les cellules de la colonne J à partir de la ligne 48 (la taille change également) elles se colorent en jaune.

J'ai fait la macro suivante:

Sub ProblemeSonde()

Dim i As Long
Dim j As Long
Dim CENTRALE_FAIBLE As String
Dim CENTRALE_PROB_SONDE As String
Dim REF As Long

i = 26 'début de la colonne des sites à faibles productibles ou ratios'
j = 48 'début de la colonne des sites avec problèmes de sondes'

CENTRALE_FAIBLE = ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("B" & i).Value

CENTRALE_PROB_SONDE = ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("J" & j).Value

For j = 48 To 300

If CENTRALE_FAIBLE = CENTRALE_PROB_SONDE Then

ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("B" & i).Interior.Color = RGB(255, 255, 0)
i = i + 1

Else

ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("B" & i).Interior.Color = RGB(255, 255, 255)
i = i + 1

End If
Next

End Sub


Le problème c'est que même si les cellules ont la même valeur, elles se colorent toutes en blanc et pas en jaune. Pouvez-vous me dire ce qui ne va pas dans ma macro, j'aimerais vraiment comprendre.

Merci d'avance pour vos réponses,

Balata 9

A voir également:

3 réponses

ben13.51 Messages postés 115 Statut Membre 7
 
Bonjour,

Il faut replacer l'affectation de la valeur à la variable au bon endroit :

En gras les principales modifications :

Sub ProblemeSonde()

Dim i As Long
Dim j As Long
Dim CENTRALE_FAIBLE As String
Dim CENTRALE_PROB_SONDE As String
Dim REF As Long

i = 26 'début de la colonne des sites à faibles productibles ou ratios'
j = 48 'début de la colonne des sites avec problèmes de sondes'

For i = 26 to ??? 'je ne sais pas à quelle ligne s'arrête les sites

CENTRALE_FAIBLE = ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("B" & i).Value

For j = 48 To 300

CENTRALE_PROB_SONDE = ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("J" & j).Value

If CENTRALE_FAIBLE = CENTRALE_PROB_SONDE Then

ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("B" & i).Interior.Color = RGB(255, 255, 0)

Else

ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("B" & i).Interior.Color = RGB(255, 255, 255)

End If

Next j

Next i

End Sub

Ca doit marcher tel quel une fois que tu as rentré la limite des i

Ben
0
balata9
 
Ben, merci por ton aide cependant j'ai toujours un petit problème. La macro colorent en jaune lors que les cellules sont vides par contre lorsque les cellules ont le même texte, elles ne les colorent pas en jaune. Je ne comprend pas pourquoi.
0
ben13.51 Messages postés 115 Statut Membre 7
 
Si c'est du texte que tu compare enlève le .value de ces deux lignes en les laissant au même endroit

CENTRALE_FAIBLE = ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("B" & i).Value

CENTRALE_PROB_SONDE = ThisWorkbook.Worksheets("TABLEAU DE CONTROLE").Range("J" & j).Value

si tu ne souhaites pas que les cellules soient colorées lorsqu'elles sont vides rajoute la condition dans le if:

If CENTRALE_FAIBLE = CENTRALE_PROB_SONDE And CENTRALE_FAIBLE<> "" Then ...
0