Cel col A = cel col B alors cel col B en surbrillance

9classeur2.xlsx (58.79 Ko)

Bonjour, mon souhait est que si une cellule dans la colonne A est identique à une cellule dans la colonne B alors je veux que cette cellule (colonne B) soit en surbrillance. Pour exemple voir fichier joint. La valeur 1 et présente dans les deux colonnes alors elle apparaît en surbrillance dans la colonne B. Je ne veux que les cellules identiques entre A et B les doublons dans la colonne B ne m’intéresse pas s'ils ne sont pas présents dans la colonne A. Comme vous le voyez les colonnes n'ont pas les mêmes nombres de cellules et d'autres v'ont s'y ajouter avec le temps mais toujours par proportionnellement entre les deux colonnes. Je bloque depuis des jours et après des heurs d'essai je n'en sors pas. Je vous remercierai jamais assez si vous prenez du temps pour m'aider.

Bonjour,

Essai ça

Sub SurbrillanceB()
Dim MaFeuille As Worksheet
Dim I, J As Integer

Set MaFeuille = Worksheets("Feuil1")

For J = 2 To MaFeuille.Range("B65535").End(xlUp).Row
    For I = 2 To MaFeuille.Range("A65535").End(xlUp).Row
        If MaFeuille.Cells(I, "A") = MaFeuille.Cells(J, "B") Then
            MaFeuille.Cells(J, "B").Interior.Color = vbYellow
        End If
    Next
Next

Set MaFeuille = Nothing

End Sub

Bonjour à tous,

une autre proposition :

8classeur2.xlsx (79.91 Ko)

Bonjour Moul et DjiDji,

Moul, Quand je lance la macro rien ne se passe.

Et DjiDji, ce n'est pas bon non plus, je vois que les doublons dans la colonne B sont en surbrillance et il me semble que ta méthode ne compare qu'une cellule de A par rapport la cellule à coté en B.

Moi il me faudrait comparer la cellule 1 en A par exemple avec chaque cellule en B et A2 avec toutes les cellules B... et si la A2 par exemple est identiques a une cellule en B alors cette cellule en B doit passer en surbrillance. Important c'est la cellule en B qui doit être mise en surbrillance.

De plus pour info la colonne B à beaucoup plus de cellule rempli que la colonne A.

Merci déjà d'avoir essayer, j'espère exprimer besoin clairement j'ai mis un exemple dans mon classeur si besoin qui me semble parlant.

Bonjour,

Le programme se lance très bien mais tes données en surbrillance apparaissent surtout tout en bas de la feuille

Je vais revérifier quand même

Bonjour à tous

3b-dans-a-mfc.xlsx (73.87 Ko)

MFC

Rien de jaune avant la ligne 3922 comme avec le VBA de Moul

Je te confirme que le programme ce lance bien chez moi.

Sub SurbrillanceB()
Dim MaFeuille As Worksheet
Dim I, J, K As Integer

Set MaFeuille = Worksheets("Feuil1")
K = 2

For J = 2 To MaFeuille.Range("B65535").End(xlUp).Row
    For I = 2 To MaFeuille.Range("A65535").End(xlUp).Row
        If MaFeuille.Cells(I, "A") = MaFeuille.Cells(J, "B") Then
            MaFeuille.Cells(J, "B").Interior.Color = vbYellow
            MaFeuille.Cells(J, "B").Copy
            MaFeuille.Cells(K, "C").PasteSpecial
            K = K + 1
        End If
    Next
Next

Set MaFeuille = Nothing

End Sub

La je remonte en plus les données en surbrillance dans le colonne C

Oui tu as raison Moul, pardon :/

Bonjour Chris, ça marche aussi.

Merci à vous c'est vraiment sympas de prendre du temps pour partager votre savoir.

Je vais essayer de l'adapter à mon tableau original mais merci déjà.

Bonne continuation à bientôt

RE

Si on préfère VBA, il faut optimiser le temps de traitement

Sub SurbrillanceB()
Dim MaFeuille As Worksheet
Dim I As Long, J As Long
Dim TabA, TabB

Set MaFeuille = Worksheets("Feuil1")

TabA = Range(Cells(1, 1), Cells(MaFeuille.Cells(Rows.Count, 1).End(xlUp).Row, 1))
TabB = Range(Cells(1, 2), Cells(MaFeuille.Cells(Rows.Count, 2).End(xlUp).Row, 2))

For J = 2 To UBound(TabB)
    For I = 2 To UBound(TabA)
        If TabB(J, 1) = TabA(I, 1) Then
            MaFeuille.Cells(J, "B").Interior.Color = vbYellow
        End If
    Next
Next

Set MaFeuille = Nothing

End Sub

Chris,

Ta macro marche dans le tableau que je vous est mis à dispo mais quand je la met dans mon classeur à moi je n'arrive pas à la faire marcher.

La différence entre mon tableau et celui que tu as vu c'est que la colonne A est en colonne O est aussi que je ne commence pas à la ligne 1 mais 2.

en ligne 1 j'ai les noms des colonnes. J'ai modifier ton code voir ci-dessous pour l'adapter à mon tableau mais ça ne marche pas donc j'ai mal fait la modif.

J'ai changer tout les A par des O

Sub Surbrillance() 

Dim MaFeuille As Worksheet 

Dim I As Long, J As Long 

Dim TabO, TabB Set MaFeuille = Worksheets("Feuil1") 

TabO = Range(Cells(1, 1), Cells(MaFeuille.Cells(Rows.Count, 1).End(xlUp).Row, 1)) 

TabB = Range(Cells(1, 2), Cells(MaFeuille.Cells(Rows.Count, 2).End(xlUp).Row, 2)) 

For J = 2 To UBound(TabB) 

For I = 2 To UBound(TabO) 

If TabB(J, 1) = TabO(I, 1) Then 

 MaFeuille.Cells(J, "B").Interior.Color = vbYellow 

End If 

Next 

Next 

Set MaFeuille = Nothing 

End Sub

Sub SurbrillanceBf()
Dim MaFeuille As Worksheet
Dim I As Long, J As Long
Dim TabO, TabB

Set MaFeuille = Worksheets("Feuil1")

TabO = Range(Cells(2, "O"), Cells(MaFeuille.Cells(Rows.Count, "O").End(xlUp).Row, "O"))
TabB = Range(Cells(2, "B"), Cells(MaFeuille.Cells(Rows.Count, "B").End(xlUp).Row, "B"))

For J = 2 To UBound(TabB)
    For I = 2 To UBound(TabO)
        If TabB(J, 1) = TabO(I, 1) Then
            MaFeuille.Cells(J, "B").Interior.Color = vbYellow
        End If
    Next
Next

Set MaFeuille = Nothing

End Sub

En version lettre pour les colonnes

Cells(2, "O")

le 2 = Ligne

le "O" ou 15 => colonne O

Je n'arrive pas à faire marcher le dernier code mais ce n'est pas grave le premier que tu m'a donné Moul marche bien.

Juste une question, dans mon tableau j'ai des règles de mise en forme conditionnelle du coup quand je lance la macro les cellules déjà en surbrillance Vert (du aux règles) ne passe pas en jaune.

Je dois obligatoirement supprimer mes règles pour que quand je lance la macro les cellules se colore ou y'a-t'il un moyen que la macro soit prioritaire et colore malgré les règles ma cellule ?

Merci à tous de votre aide vous m'avez bien dépanné et je vais gagner du temps à l'avenir !!! :)

Tes règles cherchent constamment à s'appliquer.

Autrement dit, la macro fonctionne mais les règles se reapliquent.

Les solutions :

Soit tu supprimes tes règles et tu ne t'occupes que de la Macro.

Soit tu oublies la macro

Autre Option : Supprimer tes règles et les configurer en VBA.

Ok merci de l'info

Merci à tous pour votre aide

Bonne journée et bon week-end à bientôt

Heureux d'avoir pu t'aider !

Moul

RE

Je n'arrive pas à faire marcher le dernier code mais ce n'est pas grave le premier que tu m'a donné Moul marche bien.

Voici le code plus rapide modifié pour être facilement paramétrable

Sub Surbrillance()
Dim MaFeuille As Worksheet
Dim I As Long, J As Long, LigneHaut As Long
Dim Tab1, Tab2
Dim ColAcolorer As String, ColReference As String

' Paramètres--------------------------------------------
ColAcolorer = "B"
ColReference = "O"
LigneHaut = 2 '1ère ligne hors titre
Set MaFeuille = Worksheets("Feuil1")
'-------------------------------------------------------

Tab1 = Range(Cells(LigneHaut, ColReference), Cells(MaFeuille.Cells(Rows.Count, ColReference).End(xlUp).Row, ColReference))
Tab2 = Range(Cells(LigneHaut, ColAcolorer), Cells(MaFeuille.Cells(Rows.Count, ColAcolorer).End(xlUp).Row, ColAcolorer))

For J = 1 To UBound(Tab2)
    For I = 1 To UBound(Tab1)
        If Tab2(J, 1) = Tab1(I, 1) Then
            MaFeuille.Cells(J + LigneHaut - 1, ColAcolorer).Interior.Color = vbYellow
        End If
    Next
Next

Set MaFeuille = Nothing

End Sub

Merci chris

ça marche aussi et effectivement plus rapide

Rechercher des sujets similaires à "cel col surbrillance"