VBA - Exécution de Code est Extrêmement Lent

J'ai un assez simple morceau de code que j'utilise pour faire une boucle dans une feuille excel de données. En gros, j'ai plus de 150 000 lignes de données et je veux supprimer toutes les lignes à l'exception de ceux qui ont "une Panne de l'Instrument", dans ce cas, je veux que la ligne et l'un immédiatement au-dessus et au-dessous (qui peut contenir des détails relatifs à l'échec).
Voici mon code:

Sub UnsignedFailure()
Application.ScreenUpdating = False
'Start point
Set r = Range("E1")

'Loop, total rows is a function, executes quickly
For t = 3 To TotalRows
    'Check for a failure
    k = InStr(1, r.Cells(t, 1).Value, "Instrument Failure")
    'Verify that it corresponds to a GC
    b = InStr(1, r.Cells(t, 1).Offset(0, -3).Value, "GC")
    If k <> 0 And b <> 0 Then
    'Skip two rows if it is true
        t = t + 2
    Else
    'Delete the previous row since this row is not a failure
        r.Cells(t - 1, 1).EntireRow.Delete
    'Go back a row to account for the deleted row
        t = t - 1
    End If
Next t

Application.ScreenUpdating = True
End Sub

J'ai vérifié ce en les passant en revue, et cela fonctionne. Cependant, même ayant le code de pause à chaque fois que le "SI" est vrai, le temps entre les pauses semble très longtemps (peut-être à 5 min de la case à 20 000 cellules). Si je laisse le code exécuté sans les casser, j'ai pas encore le faire au complet (ordinateur se fige). Ai-je raté quelque chose ou d'être inefficace dans mon code? Toute aide serait grandement appréciée!

Je recommanderais le bouclage du bas vers le haut lors de la suppression. De cette façon, vous pouvez supprimer une ligne et continuer sans réinitialiser le "t" à la variable. Dans votre cas, il reste peut-être quelques questions puisque vous êtes à la suppression d'un décalage de lignes, mais il peut l'aider. Je pense également que la suppression de lignes prend juste du temps. Je voudrais commenter le supprimer puis de débogage.imprimer le "t" à la variable de sorte que vous pouvez voir ce qui est lent.
Puis-je vous intéresser dans tout à fait nouvelle façon de faire cela?
Je serais!
Depuis l'OP ignoré mon commentaire, j'ai jeté le code LOL
En parcourant 150,00 lignes est le mal.

OriginalL'auteur Gaussian Blur | 2013-04-23