Autofilter - Execution trop longue

Bonjour à tous,

J'ai créer un code avec autofilter pour 6 colonnes. Cependant le code s'exécute en 20 secondes !!

Sachant que l'opération va se répéter en moyenne 5 fois, ça nous fait quand même 1min40 d'attente !

J'aurais donc voulu savoir si mon code était bien taper ou s'il y avait des pistes d'améliorations ?

Voici le code :

 With Sheets("Longueur Barre").Range("$A$1:$K$" & nbcode)
        'Classe :
                .AutoFilter field:=2, Criteria1:=Array("", Classe)
        'Essence :
                .AutoFilter field:=4, Criteria1:=Array("", Essence)
        'Traitement :
                .AutoFilter field:=5, Criteria1:=Array("", Traitement)
        'Largeur :
                .AutoFilter field:=6, Criteria1:=Array("", Largeur)
        'Hauteur :
                .AutoFilter field:=7, Criteria1:=Array("", Hauteur)
        'Type de code :
        If Sheets("Entrée").DropDowns("Zone combinée 2").Value = 2 Then
                    .AutoFilter field:=9, Criteria1:=Array("", "TAILLE")
            Else
                    .AutoFilter field:=9, Criteria1:=Array("", "DEB")
        End If
        If LongueurBarre = 0 Then
            Else
        'Longueur :
            MsgBox LongueurBarre
                    .AutoFilter field:=8, Criteria1:=Array("", Round(LongueurBarre, 1))
        End If

    End With

PS : ce code fait parti d'un code bien plus gros mais j'ai compter le temps entre deux MsgBox situé en début et fin du code ci-dessus.

Cordialement,

Bonsoir ArthurA74

Peut-être avec

' A mettre avant le code des filtres
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

' A mettre après le code des filtres
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic

A+

Je suis désolé mais cela ne change pas grand chose.
Merci pour la piste quand même

Bonjour ArthurA74

Combien de lignes de données avez-vous dans votre fichier ?

A+

J'en ai "seulement" 320 donc je trouve ça bizarre que cela prenne autant de temps

Re,

Est-il possible de mettre le fichier, pour que l'on regarde

+A

Je viens de remarquer que le fichier fait 32Mo !!! J'essaye de résoudre cela

Je vous envoie le fichier dans un wetransfer même si je n'ai pas le droit, je suis désolé

we.

tl/

t-aJIlzkSbdz

Re,

Ce n'était même pas la peine de partager le fichier, s'il fait 20Mo c'est qu'il est vérolé

Utilisez le fichier joint pour le nettoyer

Il ne devrait faire que quelques Ko

A+

Il fait quand même encore quelques milliers de Ko mais bon vous avez réussi à diviser presque par 10 la taille du fichier.

Et je ne peux toujours pas le transmettre car sup. à 3Mo

Bonjour,

Comme il y a du code et un USF, il reste un peu lourd, mais c'est normal

Voici ce que j'obtiens

image

Normalement avec ce poids, le problème de lenteur devrait avoir disparu, non ?

Ce n'est peut-être pas lié

A+

Bonjour,

Le problème de poids se situe dans l'onglet masqué "Longueur Barre"

En le recréant, voici le fichier

Bonne journée

@BrunoM45 : J'arrive plus vers 4 Ko mais oui vous avez sûrement raison.

@Cousinhub : Impressionnant la petite taille que vous obtenez. Comment avez vous fais pour la feuille pour supprimer les ligne généré inutilement ? Je pensais que ça venait de là mais aucun moyen de les supprimer...

Re-,

Dans cet onglet, j'ai d'abord essayé de supprimer toutes les lignes "vides" sous la ligne 318 (regarde dans cet onglet, dans ton fichier original, l’ascenseur de droite est tout petit, et si tu le sélectionnes, et le descend jusqu'en bas, tu arrives à la ligne 1 million et quelques...)

La suppression via ruban "Données/Edition/Supprimer/Supprimer tout" ne fonctionne pas, tout comme la sélection de ces centaines de milliers de lignes "vides", puis clic droit "supprimer".

J'ai donc copié les données utiles dans un nouvel onglet, supprimer cet ancien onglet, et renommer tout pareil

J'ai aussi remarqué que dans tes codes, tu utilises des plages "par défaut", au lieu de bien délimiter ces plages à traiter.

Bon courage

En effet plutôt basique comme méthode mais il faut y penser. Merci pour cette solution.

Pour les plages de tri "par défaut", j'imagine que tu parles des plages de tri dans la feuille "Longueur Barre".

Pour celle-ci, la plage est bien dynamique avec la variable "nbcode", mais elle ne se modifie pas après chaque tri, je ne trouvais pas ça utile.

Faudrait-il que je le fasse après chaque tri ?

ou alors tu parles tout à fait d'autre chose et dans ce cas-là je veux bien une piste stp ?

En te remerciant,

Bonjour,

Juste, par exemple, ces quelques lignes :

Sub Supprimer()
'Supprime toutes les données du classeur

    Sheets("Sortie").Select
    Range("A1:FL1000").Select

    Selection.ClearContents
....
....

Tu as délimité une plage inutilement.

De plus, lorsque tu veux vraiment supprimer, utilise .Clear tout court, plutôt que .Clear.Contents

Bon courage

Très bien, je vous remercie pour votre aide.

Bonne journée,

Rechercher des sujets similaires à "autofilter execution trop longue"