Cellules de couleur Excel Visual Basic sur Lost Focus

J'ai besoin de faire un script VBA dans Excel qui combine 2 cellules lorsque la valeur de l'une est au less 10% supérieure ou inférieure à l'autre

Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False If Target.Address = aprx_Lns Then If aprx_Lns > aprx2_Lns * 0.1 Then aprx_Lns.Interior.Color = Hex(FFFF00) aprx2_Lns.Interior.Color = Hex(FFFF00) ElseIf aprx_Lns < aprx2_Lns * 0.1 Then aprx_Lns.Interior.Color = Hex(FFFF00) aprx2_Lns.Interior.Color = Hex(FFFF00) End If End If Application.EnableEvents = True End Sub Private Sub Worksheet_Change2(ByVal Target As Range) Application.EnableEvents = False If Target.Address = aprx2_Lns Then If aprx_Lns > aprx2_Lns * 0.1 Then aprx_Lns.Interior.Color = Hex(FFFF00) aprx2_Lns.Interior.Color = Hex(FFFF00) ElseIf aprx_Lns < aprx2_Lns * 0.1 Then aprx_Lns.Interior.Color = Hex(FFFF00) aprx2_Lns.Interior.Color = Hex(FFFF00) End If End If Application.EnableEvents = True End Sub 

Qu'est-ce que je fais mal? Aucune des deux cellules ne change de couleur pour la couleur sélectionnée, même après avoir fait les valeurs pour que l'instruction if soit vraie.
Je ne connais presque rien de VBA, donc toutes les explications seraient également excellentes. Merci!

Suite à mes commentaires ci-dessus, combinons la logique avec un seul gestionnaire d'events.

En outre, il est bon d'utiliser les gammes / cellules nommées, mais vous devez vous référer correctement. Le nom lui-même n'a pas de sens dans VBA, à less qu'il ne soit qualifié de gamme explicite. Passez le nom en tant que string comme Range("aprx_Lns") , etc.

REMARQUE que ce code ne triggersra que lorsque vous modifiez directement les valeurs de l'une de ces deux cellules. Cela signifie que si ces cellules contiennent une formule faisant reference à d'autres cellules, et que les autres cellules changent, la mise en surbrillance ne se produira pas.

RÉVISÉ ET SIMPLIFIÉ

  Private Sub Worksheet_Change(ByVal Target As Range) Dim aprx_Lns As Range Dim aprx_Lns2 As Range Dim difference As Double Dim diffRatio As Double Set aprx_Lns = Range("aprx_Lns") '## Modify as needed Set aprx2_Lns = Range("aprx2_Lns") '## Modify as needed Application.EnableEvents = False If Target.Address = aprx_Lns.Address Or Target.Address = aprx2_Lns.Address Then difference = Abs(aprx_Lns) / Abs(aprx2_Lns) '## compute the absolute difference as a ratio diffRatio = Abs(1 - difference) If diffRatio >= 0.1 Then '### if the cell values differ by +/- 10%, then highlight them aprx_Lns.Interior.Color = 65535 'vbYellow aprx2_Lns.Interior.Color = 65535 'vbYellow Else '### otherwise, unhighlight them: aprx_Lns.Interior.Color = xlNone aprx2_Lns.Interior.Color = xlNone End If End If Application.EnableEvents = True End Sub