Macro - gestion d'un grand nombre de données

Bonjour,

J'ai réalisé une macro permettant de supprimer les lignes dont une cellule contient la valeur 2. Cette dernière fonctionne pour un certain nombre de données, mais lorsque je souhaite réaliser l'opération sur l'ensemble de mes données (environ 800000 points - mais cela est variable selon les fichiers analysés, et sera majoritairement plus important) on dirait qu'elle tourne dans le vide (j'ai attendu 20 minutes, sans résultats...).

Sub suppression_points_sol()

Dim i As Double
With ThisWorkbook.Sheets("Feuil1")

For i = .Range("D" & .Rows.Count).End(xlUp).Row To 2 Step -1

If .Range("D" & i).Value = "2" Then
.Rows(i).Delete
End If
Next i

End With

End Sub

Je joins un aperçu du fichier, l'intégralité du fichier n'est pas inséré car la limite est de 300 ko (le fichier original fait environ 30 Mo...).

Je souhaiterais savoir s'il est possible d'améliorer la macro et son temps de traitement.

Merci d'avance

17fichier-test.xlsm (24.48 Ko)

Bonjour LoicL, le forum

As-tu essayé la méthode SpecialCells

Sub Supprime()
    Application.ScreenUpdating = False
    Columns(1).Insert
    With Range("b2", Range("b" & Rows.Count).End(xlUp)).Offset(, -1)
        .Formula = "=if(e2=2,1,"""")"
        .Value = .Value
        On Error Resume Next
        .SpecialCells(2, 1).EntireRow.Delete
        On Error GoTo 0
    End With
    Columns(1).Delete
    Application.ScreenUpdating = True
End Sub

Pour tester, place cette instruction

.SpecialCells(2, 1).EntireRow.select

à la place de :

.SpecialCells(2, 1).EntireRow.Delete

klin89

Rechercher des sujets similaires à "macro gestion grand nombre donnees"