Optimisation du temps d'exécution

Bonjour à tous,

J'extrais chaque jour des données sous Excel. C'est un fichier lourd avec beaucoup de lignes (30000).

Chaque jour, je dois supprimer les lignes dont la cellule en A vaut "d". J'utilise donc le code :

'Trier par "d"
    Range("A4").AutoFilter Field:=1, Criteria1:=Array("d"), Operator:=xlFilterValues

'Supprimer les lignes "d"
    Range("A5" & ":P" & nbrlignesfitre).EntireRow.Delete

Cependant, le programme tourne pendant environ 10mn...

Connaissez-vous un autre moyen de supprimer plus rapidement ces lignes ?

Merci beaucoup pour votre temps,

Simon

Bonjour,

Sub supLignesRapide2()
  t = Timer()
  Application.ScreenUpdating = False
  a = Range("A2:A" & [A65000].End(xlUp).Row)
  For i = LBound(a) To UBound(a)
    If a(i, 1) <> "d" Then a(i, 1) = 0 Else a(i, 1) = "sup"
  Next i
  Columns("b:b").Insert Shift:=xlToRight
  [B2].Resize(UBound(a)) = a
  [A2].CurrentRegion.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess
  On Error Resume Next
  Range("B2:B65000").SpecialCells(xlCellTypeConstants, 2).EntireRow.Delete
  Columns("b:b").Delete Shift:=xlToLeft
  MsgBox Timer() - t
End Sub

Boisgontier

Bonjour Boisgontier,

C'est super merci beaucoup !!

Je test ça demain car je ne peux pas le faire aujourd'hui...

Si cela ne met que quelques secondes ça serait fantastique.

Je te remercie,

Simon

Rechercher des sujets similaires à "optimisation temps execution"