Méthode de comparaison rapide de 2 colonnes

EDIT: au Lieu de ma solution, utiliser quelque chose comme

 For i = 1 To tmpRngSrcMax
     If rngSrc(i) <> rngDes(i) Then ...
 Next i

C'est environ 100 fois plus rapide.

Je dois comparer deux colonnes contenant des données de chaîne à l'aide de VBA. C'est mon approche:

Set rngDes = wsDes.Range("A2:A" & wsDes.Cells(Rows.Count, 1).End(xlUp).Row)
Set rngSrc = wsSrc.Range("I3:I" & wsSrc.Cells(Rows.Count, 1).End(xlUp).Row)

tmpRngSrcMax = wsSrc.Cells(Rows.Count, 1).End(xlUp).Row
cntNewItems = 0

For Each x In rngSrc

tmpFound = Application.WorksheetFunction.CountIf(rngDes, x.Row)
Application.StatusBar = "Processed: " & x.Row & " of " & tmpRngSrcMax & " /" & Format(x.Row / tmpRngSrcMax, "Percent")
DoEvents ' keeps Excel away from the "Not responding" state

If tmpFound = 0 Then ' new item
    cntNewItems = cntNewItems + 1

    tmpLastRow = wsDes.Cells(Rows.Count, 1).End(xlUp).Row + 1  ' first empty row on target sheet
    wsDes.Cells(tmpLastRow, 1) = wsSrc.Cells(x.Row, 9)
End If
Next x

Donc, je suis en utilisant une boucle For each pour itérer à travers le 1er (src) de la colonne, et la Nb.si méthode pour vérifier si l'élément est déjà présent dans le 2ème (des) colonne. Si non, la copie à la fin de la 1ère (src) de la colonne.

Le code fonctionne, mais sur ma machine il faut ~200s donné colonnes, avec près de 7 000 lignes. J'ai remarqué que Nb.si fonctionne de manière plus rapide lorsqu'elle est utilisée directement comme une formule.

Quelqu'un a des idées pour l'optimisation du code?

source d'informationauteur Clemens