Macro VBA pour find des duplicates à l'aide de gammes

VBA noob ici, a cherché pendant 2 jours pour find un script que je peux modifier pour mes besoins, mais je rest bloqué ou ne peut rien faire pour ma situation particulière.

J'essaie d'écrire une macro simple mais spécifique pour find et colorier des duplicates dans les plages.

Mes critères de search sont dans Gamme (B5: B405) Les données à parsingr et à colorier sont situées dans la plage (D5: OM1004)

Les données ne sont que des nombres et doivent correspondre exactement aux critères de search, si datatables de la cellule existent dans les critères de search, la cellule de données est remplie en rouge.

J'ai également besoin d'arrêter le script à la ligne de données 1004 et d'afficher un message avec un time d'exécution total à la fin.

Je peux le faire en quelques secondes avec le formatting conditionnel, mais j'ai besoin de countr les cellules colorées après et aucune macros VBA que je puisse find me permettra de comstackr des colors formatées conditionnellement, même dans tout le site de cpearson sans succès.

Essaye ça:

Option Explicit Sub ColorCriteria() Dim rCriteria As Range Dim rData As Range Dim c As Range, r As Range Dim sFirstAddress As Ssortingng Dim ColorCounter As Long Dim StartTime As Single, EndTime As Single StartTime = Timer Set rCriteria = Range("B5:B405") Set rData = Range("D5:OM1004") Application.ScreenUpdating = False With rData .Interior.ColorIndex = xlNone For Each r In rCriteria If Not r = "" Then Set c = .Find(what:=r.Value, LookIn:=xlValues, lookat:=xlWhole, _ searchdirection:=xlNext) If Not c Is Nothing Then sFirstAddress = c.Address c.Interior.Color = vbRed Do Set c = .FindNext(c) c.Interior.Color = vbRed ColorCounter = ColorCounter + 1 Loop Until c.Address = sFirstAddress End If End If Next r End With Application.ScreenUpdating = True EndTime = Timer MsgBox ("Execution Time: " & Format(EndTime - StartTime, "0.000"" sec""") _ & vbLf & "Colored Cell Count: " & ColorCounter) End Sub 

En effet, la solution est parfaite. Mais juste pour clarifier, que l'approche initiale avec le comptage de cellules formées conditionnelles pourrait fonctionner à partir d'Excel 2010. La couleur peut être identifiée et les cellules ont compté avec quelque chose comme ça

 Set aktSheet = Application.ActiveWorkbook.Worksheets("Sheet1") counter = 0 For Each c In aktSheet.Range("D5:OM1004").Cells If c.DisplayFormat.Interior.ColorIndex = 38 Then counter = counter + 1 End If Next