[VBA excel] macro bloquée par taille fichier
pol_38
-
Utilisateur anonyme -
Utilisateur anonyme -
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!!
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:
- [VBA excel] macro bloquée par taille fichier
- Comment réduire la taille d'un fichier - Guide
- Fichier bin - Guide
- Fichier epub - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Fichier rar - Guide
2 réponses
Bonjour,
autre point !
désactiver l'affichage pour alléger l'exécution :
Lupin
autre point !
désactiver l'affichage pour alléger l'exécution :
Sub Test1()
Application.ScreenUpdating = False
' ...
' Code
' ...
Application.ScreenUpdating = True
End Sub
'
Lupin
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.
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.