VBA : Colorer deux cellules dont les valeurs sont égales

Bonjour à tous,

Je me permet d'écrire ce post car mon programme ne fonctionne qu'une fois sur 10 et après maintes recherches et tentatives, je ne sais toujours pas pourquoi ! J'ai besoin de votre aide.

Je vous explique :

j'ai programmé une fonction permettant de mettre en place un code couleur quant à l'état des cellules d'une même ligne des colonnes "E" et "F" :

  • VERT : Les deux cellules des colonnes "E" et "F" ont la même valeur
  • ORANGE : Les deux cellules des colonnes "E" et "F" ont des valeurs différentes
  • ROUGE : Une deux deux cellules est vide (vous pouvez voir sur l'image ci jointe que cela ne fonctionne pas du tout).

Cette fonction est enclenchée par un bouton "mettre à jour".

Le problème étant qu'elle ne fonctionne qu'un fois sur 10, sans réellement que je sache pourquoi... J'ai tenté de modifier le format des cellule ou de changer les horaires plusieurs fois, en vain. De façon aléatoire, ma fonction va me colorer ou non mes cellules correctement.

Pouvez vous me dire où j'ai commis une erreur dans mon code (ci joint) ?

 Private Sub CommandButton_MAJ_Click()
'déclaration de la variable de nombre de ligne
Dim NbLig As Integer

'Cacul du nombre de ligne remplies dans ma colonne
NbLig = Cells(1, 5).SpecialCells(xlCellTypeLastCell).Row

For i = 4 To NbLig
'Si les cellules ont des valeurs différentes alors elles sont colorées en orange
   If Cells(i, 5).Value <> Cells(i, 6).Value Then
   Cells(i, 5).Interior.Color = RGB(255, 128, 0)
   Cells(i, 6).Interior.Color = RGB(255, 128, 0)
   End If
'Si les cellules ont les mêmes valeurs alors elles sont colorées en vert
   If Cells(i, 5).Value = Cells(i, 6).Value Then
   Cells(i, 5).Interior.Color = RGB(0, 160, 0)
   Cells(i, 6).Interior.Color = RGB(0, 160, 0)
   End If
'Si l'une des cellules est vide, alors elles sont colorées en Rouge
   If (Cells(i, 5).Value = "") Or (Cells(i, 6).Value = "") Then
   Cells(i, 5).Interior.Color = RGB(255, 0, 0)
   Cells(i, 6).Interior.Color = RGB(255, 0, 0)
   End If

  Next
End Sub
 

Merci et Bonne fin de journée

aefaed

Bonsoir,

Vérifie le contenu de tes cellules !

bonjour

Je ne vois pas ce que tu veux dire par le fait de vérifier le contenu de mes cellules.

En effet, le seul fait d'avoir une cellule vide dans l'une des colonne devrait m'afficher ma ligne en rouge, or ce n'est pas le cas..

Il y a des lignes qui ont exactement la même valeur et qui pourtant, ne sont pas colorée en vert et d'autre oui...

Pour être sur que ces cellules aient la même valeur je fais des copier/coller pour les remplir, ça ne change rien. J'ai aussi essayé de changer le format de celle-ci, rien à faire

Tu as un code qui colore selon conditions, il pourrait être mieux écrit, mais cela n'est pas de nature à l'empêcher de fonctionner !

La coloration intervient donc selon les conditions stipulées dans ton code.

Si une couleur autre que celle que tu attends apparaît, il faut en conclure que la couleur qui apparaît coorespond à la condition pour cette couleur. Et si une couleur n'apparaît pas, c'est que la condition n'est pas réunie pour qu'elle apparaisse !

C'est logique ! Non ?

Il te faut donc vérifier le contenu des cellules si tu n'as pas ce que tu attends !

Bonjour,

décidemment il doit y avoir une épidémie...

Et pourquoi pas une MFC qui est prévue pour ?

eric

Salut Eric !

Rechercher des sujets similaires à "vba colorer deux valeurs egales"