Comparer 2 feuilles et colorier ligne différentes

  • Initiateur de la discussion Initiateur de la discussion Laurentb974
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

L

Laurentb974

Guest
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

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

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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
XL 2021 Macro
Réponses
6
Affichages
236
  • Question Question
Microsoft 365 Remplissage auto
Réponses
14
Affichages
232
Réponses
3
Affichages
101
  • Question Question
Microsoft 365 Fonction si
Réponses
7
Affichages
124
Retour