Résolu.

Arpette

XLDnaute Impliqué
Bonsoir à toutes et tous,
J'ai un problème avec ma macro sur le filtre. Avec 2010 6 mn, avec 2007 bug
Je joints le fichier.
A noter que je suis sous windows 8.1
Merci pour votre aide car là je sèche.
@+
 
Dernière édition:

Arpette

XLDnaute Impliqué
Re : VBA lenteur avec filtre 2007

Bonjour à tous, à noter que le fichier à traiter fait 120000 lignes
Merci pur votre aide.
@+
 

Pièces jointes

  • Coverage_01.xlsm
    77.3 KB · Affichages: 27
  • Coverage_01.xlsm
    77.3 KB · Affichages: 43
  • Coverage_01.xlsm
    77.3 KB · Affichages: 39
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : VBA lenteur avec filtre 2007

Bonsoir à tous


Arpette
Je ne t'ai pas oublié mais je reste bloqué à ce stade
VB:
Sub MacroTest()
Dim d As Range
Range("A1").AutoFilter 1, "Val" 'ici c'est la syntaxe classique
Range("A1").AutoFilter 29, "06 QES projetée" 'ici c'est la syntaxe classique
'(j'ai supprimé l'espace par rapport à ton code d'origine
'les données sont bien filtrées mais..
Set d = Range("_FilterDataBase")
'la suppression des lignes est défectueuse
d.Offset(1, 0).Resize(d.Rows.Count - 1).SpecialCells(12).Delete Shift:=xlUp
ActiveSheet.ShowAllData
End Sub

J'attends donc que nos petits camarades passent dans ton fil pour comprendre ce qui coince.
 

Herdet

Nous a quitté
Repose en paix
Re : VBA lenteur avec filtre 2007

Bonsoir Arpette,
Sur mon PC, exécution en 0,387 secondes (Win 7 Office 2010) mais pour 2000 lignes.
Il est possible que la sélection avec "DD1000000" sature un peu.
A tester code suivant avec CurrentRegion pour limiter au minimum la sélection :
Code:
......
   With Sheets("Coverage_01")
   
'     With .Range("A1:A" & .Range("DD1000000").End(xlUp).Row)
'        .Sort key1:=.Item(1, 9), order1:=xlAscending, Header:=xlYes
'     End With
'      Set j = .Range("I" & .Range("I1000000").End(xlUp).Row)
   Dim a As Variant
   Set a = Range("A1").CurrentRegion
   a.Sort key1:=.Item(1, 9), order1:=xlAscending, Header:=xlYes
   Set j = a.Offset(1, 10).Resize(a.Rows.Count, 1)
   
'j.Select
     
    Cells(1, 30).EntireColumn.Insert
    Cells(1, 30) = "Prix Unitaire"
    Cells(1, 31) = "Stock à l'édition"
    Cells(1, 32) = "Stock-Arriéré"
    Columns("AD:AD").Select
    Selection.NumberFormat = "#,##0.00 $"

Cordialement
Robert
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : VBA lenteur avec filtre 2007

Bonsoir Herdet à toi aussi...*

Avec CurrentRegion, on risque d'avoir des soucis, non ?
à cause de la présence des cellules vides dans le tableau.
Code:
Sub a()
MsgBox Range("A1").CurrentRegion.Address
End Sub


PS: *: J'ai pourtant une hygiène buccale plus que convenable
 

Arpette

XLDnaute Impliqué
Re : VBA lenteur avec filtre 2007

Bonjour Staple et Herdet, j'ai testé avec ton code Staple. La macro tourne depuis 45minutes et ce n'est pas terminé. Sur 2010 le déroulement total dure 6 minutes. Ce qui est bizarre également, c'est que je ne peux pas l'arrêter avec Ctrl+Pause pour voir l'avancement.
Merci de votre aide.
@+
 

Staple1600

XLDnaute Barbatruc
Re : VBA lenteur avec filtre 2007

Bonjour à tous

Arpette
Si tu testes juste ceci (en étant sur la feuille qui doit être filtrée)
Code:
Sub MacroTestII()
Dim d As Range
Range("A1").AutoFilter 1, "Val" 'ici c'est la syntaxe classique
Range("A1").AutoFilter 29, "06 QES projetée" 'ici c'est la syntaxe classique
End Sub
Le filtre est appliqué ou pas ?
 

Staple1600

XLDnaute Barbatruc
Re : VBA lenteur avec filtre 2007

Re


J'ai testé sur un fichier créé pour l'occasion
VB:
Sub MacroTestIII()
Dim d As Range
Range("A1").AutoFilter 1, "Val" 'ici c'est la syntaxe classique
Range("A1").AutoFilter 29, "abc1 127" 'ici adapter avec tes critères
ActiveSheet.AutoFilter.Range.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
ActiveSheet.ShowAllData
End Sub
Il semble que la suppression se fasse bien et rapidement, non ?
(en tout cas, c'est le cas sur mon fichier de test - test fait avec Excel 2013 sur un fichier avec plus de 5000 lignes)
 
Dernière édition:

néné06

XLDnaute Accro
Re : VBA lenteur avec filtre 2007

Bonjour Arpette,Herdet, salut Jean-Marie

Sur mon vieux PC qui rame, exécution en plus de 4 secondes (Win 7, Office 2007) pour les 2000 lignes.
Donc sur excel 2007, il n'y a pas de bug chez moi .

Si cela peut donner une piste ?

A+

René
 

Arpette

XLDnaute Impliqué
Re : VBA insérer deux colonnes

Bonjour à vous, oui Staple sur office 2010 aussi, je traite les 124000 lignes en un peu plus de 6 minutes. Mais sur 2007 rien au bout d'une heure, juste avec le code filtre et supprimé, que tu as mis juste au dessus. J'ai Windows 8.1 ça peu pas venir de ça ?
Merci de votre aide.
@+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 282
Messages
2 086 768
Membres
103 391
dernier inscrit
lrol