Colorer des cellules à l'aide d'une macro
balata9
-
ben13.51 Messages postés 115 Statut Membre -
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:
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
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:
- Colorer des cellules à l'aide d'une macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Verrouiller des cellules excel - Guide
- Colorer des cellules excel sous condition - Guide
- Excel additionner plusieurs cellules - Guide
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
3 réponses
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
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
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.
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 ...
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 ...