/ / Mise en forme conditionnelle basée sur une autre boucle de cellules - vba, excel-vba, excel

Mise en forme conditionnelle basée sur une autre boucle de cellules - vba, excel-vba, excel

J'ai écrit un code dans lequel chaque fois que la valeur est modifiée dans une cellule, une autre cellule est mise en surbrillance, mais dans le code ci-dessous, il fonctionne bien.
malheureusement si le montant est inférieur ou inférieur à 500met correctement la cellule B29: C29 en surbrillance lorsque la quantité suivante chute de 1 500 dans la cellule C15, puis B31: C31 est mis en surbrillance, mais B29: C29 est également disponible avant toute autre macro appliquée en premier.

Sub Highlight_Cells()

If Range("C18") >= "500" Then
Range("B29:C29").Interior.Color = vbYellow
End If

If Range("C18") >= "501" And Range("C18") <= "1000" Then
Range("B30:C30").Interior.Color = vbYellow
End If

If Range("C18") >= "1001" And Range("C18") <= "2000" Then
Range("B31:C31").Interior.Color = vbYellow
End If

If Range("C18") >= "2001" And Range("C18") <= "5000" Then
Range("B32:C32").Interior.Color = vbYellow
End If

If Range("C18") > "5000" Then
Range("B33:C33").Interior.Color = vbYellow
End If

End Sub

Réponses:

0 pour la réponse № 1

Vous devez traiter vos couleurs comme un interrupteur. Si elles sont allumées, elles ne s’éteindront que si vous le leur dites.

Essaye ça

Sub Highlight_Cells()

If Range("C18") >= "500" Then
Range("B29:C29").Interior.Color = vbYellow
Else
Range("B29:C29").Interior.ColorIndex = 0
End If

If Range("C18") >= "501" And Range("C18") <= "1000" Then
Range("B30:C30").Interior.Color = vbYellow
Else
Range("B30:C30").Interior.ColorIndex = 0
End If

If Range("C18") >= "1001" And Range("C18") <= "2000" Then
Range("B31:C31").Interior.Color = vbYellow
Else
Range("B31:C31").Interior.ColorIndex = 0
End If

If Range("C18") >= "2001" And Range("C18") <= "5000" Then
Range("B32:C32").Interior.Color = vbYellow
Else
Range("B32:C32").Interior.ColorIndex = 0
End If

If Range("C18") > "5000" Then
Range("B33:C33").Interior.Color = vbYellow
Else
Range("B33:C33").Interior.ColorIndex = 0
End If

End Sub