[vba] Repérer / mettre en évidence données identiques sur 2 feuilles: pb code

tweedi

XLDnaute Nouveau
Bonsoir à tous,

J'ai un petit problème auquel j'ai en parti trouvé la solution dans d'autres post sur ce forum, mais j'ai besoin d'un petit coup de pouce.

J'ai donc 2 feuilles excel qui comportent des données est notamment une colonne (celle qui m'intéresse) avec un code composé de lettres et de chiffres.

L'idée est de faire un petit bout de code me permettant de comparer les deux feuilles (ou plus précisément les deux colonnes) et de mettre en évidence (souligner ou mettre en couleur) les cellules identiques dans les deux feuilles.

Voici le code que j'ai trouvé sur ce forum:

Sub Ma_macro()

Dim i As Integer
i = 2
While i < 20
If Worksheets("Feuil2").Range("A" + CStr(i)).Value <> Worksheets("Feuil1").Range("C" + CStr(i)).Value Then
Worksheets("Feuil1").Activate
Worksheets("Feuil1").Range("C" + CStr(i)).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
i = i + 1
Wend

End Sub

Quand j'exécute cette macro, tout la colonne C de la feuille 1 est en surbrillance jaune, alors qu'il ne faudrait que les cellules identiques.

Je n'arrive qu'à jouer avec "i = 2" (démarre à la deuxième ligne), "while i < 20" (ne met que les 20 premières lignes en jaune), et "i = i + 1" (change le pas des cases mises en surbrillance), l'erreur se trouve donc ailleurs.

Je débute, évidemment. Merci pour votre aidre par avance !
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : [vba] Repérer / mettre en évidence données identiques sur 2 feuilles: pb code

Bonjour Tweedi et bienvenu(e), bonsoir le forum,

Puisque tu es nouveau(elle) je te recommande vivement de lire la
Lien supprimé du forum qui donne tous les bons plans pour obtenir de l'aide rapidement. Pour traiter ton problème un petit fichier exemple nous aurait bien facilité la tâche...
Essaie le code ci-dessous :
Code:
Sub Macro1()
Dim o1 As Object 'déclare la variable o1 (onglet 1)
Dim o2 As Object 'déclare la variable o2 (onglet 2)
Dim dl1 As Integer 'déclare la variable dl1 (dernière Ligne 1)
Dim dl2 As Integer 'déclare la variable dl2 (dernière Ligne 2)
Dim pl1 As Range 'déclare la variable pl1 (PLage 1)
Dim pl2 As Range 'déclare la variable pl2 (PLage 2)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim r As Range 'déclare la variable r (Recherche)
Dim pa As String 'déclare la variable pa (première Adresse) 

Set o1 = Sheets("Feuil1") 'definit l'onglet o1
Set o2 = Sheets("Feuil2") 'definit l'onglet o2
dl1 = o1.Cells(Application.Rows.Count, 3).End(xlUp).Row 'définit la dernière ligne édité dl1 de la colonne 3 (=C) de l 'onglet o1
dl2 = o2.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne édité dl2 de la colonne 1 (=A) de l 'onglet o2
Set pl1 = o1.Range("C1:C" & dl1) 'définit la plage pl1
Set pl2 = o2.Range("A1:A" & dl2) 'définit la plage pl2
For Each cel In pl1 'boucle sur toutes les cellule éditée cel de la plage pl1
    Set r = pl2.Find(cel.Value, , xlValues, xlWhole) 'définit la recherche r (recherche la valeur de la cellule de la boucle dans pl2)
    If Not r Is Nothing Then 'condition : si il existe au moins une occurrence
        pa = r.Address 'définit l'adresse de la première occurrence trouvé
        Do 'exécute
            cel.Interior.ColorIndex = 6 'colore la cellule cel
            r.Interior.ColorIndex = 6 'colore l'occurrence trouvée r
            Set r = pl2.FindNext(r) 'redéfinit la recherche r (occurrence suivante)
        Loop While Not r Is Nothing And r.Address <> pa 'boucle tant qu'il existe de nouvelles occurrences ailleurs qu'en pa
    End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
End Sub
 

tweedi

XLDnaute Nouveau
Re : [vba] Repérer / mettre en évidence données identiques sur 2 feuilles: pb code

Il y a 250 valeurs, donc je vais devoir vérifier s'il n'y a pas de problème dans la reconnaissance des valeurs pour cette première application, mais à priori ... ça marche :cool:

Un grand merci et particulièrement pour avoir pris la peine de commenter le code, cela me permet de comprendre ce qu'il se passe et de le réappliquer.

Merci encore Robert
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : [vba] Repérer / mettre en évidence données identiques sur 2 feuilles: pb code

Bonjour Tweedi, bonjour le forum,

Non, tu remplaces les deux lignes :
Code:
cel.Interior.ColorIndex = 6 'colore la cellule cel
r.Interior.ColorIndex = 6 'colore l'occurrence trouvée r
par :
Code:
cel.EntireRow.Interior.ColorIndex = 6 'colore la ligne de la cellule cel
r.EntireRow.Interior.ColorIndex = 6 'colore la ligne de l'occurrence trouvée r
 

Discussions similaires

Réponses
5
Affichages
172
Réponses
6
Affichages
232

Statistiques des forums

Discussions
312 162
Messages
2 085 858
Membres
103 005
dernier inscrit
gilles.hery