[VBA excel] macro bloquée par taille fichier

Fermé
pol_38 - 12 mars 2007 à 11:09
 Utilisateur anonyme - 3 août 2007 à 16:21
Bonjour,

Débutant en VBA-excel, j'ai créé une petite macro qui efface les lignes d'un fichier contenant le mot "DOC" dans la colonne 6.
Elle fonctionne pour un petit fichier mais bloque si le fichier devient trop lourd (>10 000 lignes).
Quelqu'un aurait une idée pour optimiser cette macro et la faire tourner qqe soit la taille du fichier?

Quand le fichier est trop lourd, j'ai le message d'erreur suivant:
"delete method of Range class failed"

Voici le code:

Sub Prodel_Rows()

Rows("1:1").Select
Cells.AutoFilter
Selection.AutoFilter Field:=6, Criteria1:="DOC"
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp

End Sub

Merci d'avance pour votre aide!!
A voir également:

2 réponses

Utilisateur anonyme
3 août 2007 à 16:21
Bonjour,

autre point !

désactiver l'affichage pour alléger l'exécution :


Sub Test1()

    Application.ScreenUpdating = False
    ' ...
    ' Code
    ' ...
    Application.ScreenUpdating = True
    
End Sub
'


Lupin
1
Ziragora Alphonse
3 août 2007 à 12:36
Bonjour Pol_38,

Avec la méthode Filter, ça peut aller vite.... Pour l'instant, cette méthode te bloque car message d'erreur. Je te propose, en attendant, ce code qui prend un peu plus de temps( ex. 30 sec pour 13 000 lignes) mais qui réussit.

a = 1
EndTable = Range("F65536").End(xlUp).Row
For I = 2 To EndTable
a = a + 1
If Cells(a, 6) = "DOC" Then
Cells(a, 6).EntireRow.Delete
a = a - 1
End If
Next I


Merci.
0