Comparer 2 feuilles et colorier ligne différentes

Laurentb974

XLDnaute Nouveau
Bonjour à tous,
J'essaie de réaliser une macro qui pourrait se définir selon le programme suivant :

Comparer la colonne A et B de la feuil1 avec la colonne A et B de la feuil2

S’il trouve les mêmes valeurs en colonne A et B et que le reste de la ligne est identique, ne rien faire.

S’il trouve les mêmes valeurs en colonne A et B et que le reste de la ligne est différent, alors surligner en jaune cette ligne sur la feuil2.

S’il apparaît de nouveaux éléments en colonne A et B de la feuil2, alors surligner cette ligne en vert.

J'ajoute le fichier en PJ.

Vous remarquerez une macro ( que Robert m'a indiqué, merci à lui ), je débute dans le monde des macros. ( j'ai enfin compris comment enregistrer la macro dans le fichier Aha ! )
 

Pièces jointes

  • Classeur1.xlsm
    16.4 KB · Affichages: 35

job75

XLDnaute Barbatruc
Bonsoir Laurentb974, Jaccky67,

Pas besoin de macro, voyez le fichier .xlsx joint.

Pour que les 2 tableaux soient dynamiques le mieux est de les organiser en tableaux Excel.

Voyez les noms définis pour chaque colonne du 1er tableau et la MFC sur le 2ème (2 conditions).

PS : j'ai effacé les tirets qui ne peuvent être que sources d'erreur...

A+
 

Pièces jointes

  • MFC comparaisons(1).xlsx
    19.7 KB · Affichages: 30

job75

XLDnaute Barbatruc
Bonjour Laurentb974, Jaccky67, le forum,

Si l'on tient au VBA on pourra utiliser cette macro :
Code:
Sub Comparer(tablo1 As Range, tablo2 As Range)
Dim d1 As Object, d2 As Object, t, ncol%, i&, x$, j%
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
d1.CompareMode = vbTextCompare 'la casse est ignorée
d2.CompareMode = vbTextCompare
'---1er tableau---
t = tablo1: ncol = UBound(t, 2) 'matrice, plus rapide
For i = 2 To UBound(t)
    x = t(i, 1) & t(i, 2)
    d1(x) = ""
    For j = 2 To ncol
        x = x & Chr(1) & t(i, j)
    Next j
    d2(x) = ""
Next i
'---2ème tableau---
Application.ScreenUpdating = False
tablo2.Offset(1).Resize(Rows.Count - 1).Interior.ColorIndex = xlNone 'RAZ
t = tablo2 'matrice, plus rapide
For i = 2 To UBound(t)
    x = t(i, 1) & t(i, 2)
    If Not d1.exists(x) Then tablo2.Rows(i).Interior.ColorIndex = 4: GoTo 1 'vert
    For j = 2 To ncol
        x = x & Chr(1) & t(i, j)
    Next j
    If Not d2.exists(x) Then tablo2.Rows(i).Interior.ColorIndex = 6 'jaune
1 Next i
End Sub
Avec des Dictionary et un tableau VBA c'est plus rapide.

Notez qu'il n'est pas nécessaire ici d'organiser les tableaux en tableaux Excel.

Fichier joint.

A+
 

Pièces jointes

  • Comparaisons VBA(1).xlsm
    27.6 KB · Affichages: 46

Laurentb974

XLDnaute Nouveau
Bonjour à tous,
Désolé pour ce silence de quelques jours, je n'étais plus disponible...
Alors là.... je dois dire que vous m'impressionnez !!!
Votre réactivité et les propositions sont bluffantes !
Les propositions de Jacky et Job 75 sont parfaites !
J'ai hâte de les tester en vrai la semaine prochaine.
Merci à vous deux !
Encore bravo !
Bien à vous,
Laurent
 

Discussions similaires

Réponses
6
Affichages
152

Statistiques des forums

Discussions
311 735
Messages
2 082 024
Membres
101 873
dernier inscrit
excellllll