Optimisation filtre auto

Bonjour à tous,

Je sollicite votre aide pour optimiser une macro de filtre auto.

Le tri auto met une trentaine de seconde à s'effectuer. j'aurai souhaité que ce soit bien plus rapide.

Je vous met juste la macro, mon fichier étant trop lourd pour le mettre en PJ.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
drligne_feuil14 = Range("a" & Rows.Count).End(xlUp).Row - 1
If Not Intersect(Target, Range("c5:h" & drligne_feuil14)) Is Nothing Then
    With Sheets("Stock Demandes")
        etat = Cells(4, Target.Column)
        conseiller = Range("a" & Target.Row)
        drligne = .Range("b" & Rows.Count).End(xlUp).Row

        .Range("$A$2:$O$" & drligne).AutoFilter Field:=11, Criteria1:=conseiller
        .Range("$A$2:$O$" & drligne).AutoFilter Field:=6, Criteria1:=etat

    End With
    Sheets("Stock Demandes").Visible = True
    Sheets("Stock Demandes").Activate
End If
End Sub

En espérant que ce soit possible

merci d'avance pour vos lumières

peka

Bonjour

peka a écrit :

Je vous met juste la macro, mon fichier étant trop lourd pour le mettre en PJ.

Passe par http://www.cjoint.com et tu auras un lien à copier et coller dans ton prochain message, car sans le fichier, on ne pourra pas faire de test.

Bye !

Bonjour,

Peut-être beaucoup de formules...

Essaie en mettant en début de code :

With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
End With

et en toute fin de code :

Application.Calculation = xlCalculationAutomatic

Bon dimanche

Bonjour,

Oui effectivement il y a pas mal de formules.

Ton astuce réduit le temps à une quinzaine de secondes.

C'est déjà mieux mais dans l'idéal j'aurai voulu de l'instantané. (max 2 sec)

Merci pour ton aide

peka

Re-,

Une autre option, (que perso, j'aime pas trop, mais qui dans ton cas, ne devrait pas être source d'erreur)...

En début de code :

With Application
    .EnableEvents = False
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
End With

Et en fin de code :

With Application
    .EnableEvents = True
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With

L'instruction "EnableEvents" est à utiliser avec parcimonie, car en cas de bug dans le code, cette instruction (qui désactive les évènements de feuille ou de classeur) ne se remet pas automatiquement à True...

Mais comme dit supra, dans ton cas, il ne devrait pas y avoir de soucis...

Bon courage

Je reste aux alentours des 15sec.

Le tri se fait sur une feuille de plus de 10000 lignes.

C'est peut être ce qui fait que c'est si long

Rechercher des sujets similaires à "optimisation filtre auto"