Colorer des cellules à l'aide d'une macro

Fermé
balata9 - 14 juin 2010 à 15:50
ben13.51 Messages postés 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 - 14 juin 2010 à 17:29
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 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 7
14 juin 2010 à 16:05
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
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 112 Date d'inscription mercredi 18 mars 2009 Statut Membre Dernière intervention 11 janvier 2012 7
Modifié par ben13.51 le 14/06/2010 à 17:30
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