Crash d'Excel lors de l'exécution d'un filtre de tableau

Bonjour,

Comme dit dans le titre mon fichier excel crash lors de l’exécution d'une macro :

Sub tableau()

    der_ligne = Workbooks("encours.xlsm").Worksheets("En cours (2)").Range("A" & Rows.Count).End(xlUp).Row

    Workbooks("encours.xlsm").Worksheets("En cours (2)").ListObjects.Add(xlSrcRange, Workbooks("encours.xlsm").Worksheets("En cours (2)").Range("$A$1:$H" & der_ligne), , xlYes).Name = "table_entiere"

    For i = 2 To der_ligne
        If Cells(i, 8) <> "" Then
            'Workbooks("encours.xlsm").Worksheets("En cours (2)").ListObjects("table_entiere").Range.AutoFilter Field:=8, Criteria1:="=" 'FAIT CRASH EXCEL
            Exit For
        End If
    Next

    Workbooks("encours.xlsm").Worksheets("En cours (2)").ListObjects("table_entiere").Sort.SortFields.Clear
    Workbooks("encours.xlsm").Worksheets("En cours (2)").ListObjects("table_entiere").Sort.SortFields.Add Key:=Range("table_entiere[[#All],[Nom client final]]"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With Workbooks("encours.xlsm").Worksheets("En cours (2)").ListObjects("table_entiere").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

après quelque passe sur le mode pas à pas j'en ai déduit la ligne en commentaire étant responsable du crash.

Avez-vous des idées de pourquoi il crash ?

pour expliquer simplement la macro, on créé un tableau de A1 à H dernière ligne qu'on nome "table_entiere"

ensuite si dans la colonne 8 on croise une case qui n'est pas vide on tri le tableau afin qu'il ne reste que les ligne ou la cellule est vide dans cette colonne

enfin on tri le tableau afin d'avoir les "nom client final" tri par ordre alphabétique.

Si vous avez des questions en plus n'hésitez pas

Bien cordialement.

Arthur

Bonjour,

Peux-tu joindre un fichier exemple que l'on ait une base pour travailler ?

Dans ton code, je ne comprends pas pourquoi tu ajoutes un AutoFilter dans un boucle, afin de le répéter sur chaque ligne ? Quand tu réalises un AutoFilter via l'enregistreur de macro, il ne le fait qu'une fois sur les en-têtes il me semble.

Dans ton code, je ne comprends pas pourquoi tu ajoutes un AutoFilter dans un boucle, afin de le répéter sur chaque ligne ? Quand tu réalises un AutoFilter via l'enregistreur de macro, il ne le fait qu'une fois sur les en-têtes il me semble.

Déjà merci de m'aider ,

dans mon code la boucle for est la pour voir si une ligne contient autre chose que du vide dans la colonne après il y a un Exit for qui me fait sortir de la boucle, la commande qui fait crash excel (je pense ) n'est exécuter qu'une fois.

Ci joins une copie du fichier avec moins de lignes, un gros bouton pour le test et un peu de censure

Je t'ai fait un exemple à partir de données fictives (9 colonnes, 29 lignes). J'ai utilisé l'enregistreur de macro pour trier les cellules non vides en colonne 5 ("E") :

 Rows("1:1").Select
    Selection.AutoFilter
    Range("F4").Select
    ActiveSheet.Range("$A$1:$I$29").AutoFilter Field:=5, Criteria1:="<>"

Retravaillé ça donne :

 Rows(1).AutoFilter
ActiveSheet.Range("$A$1:$I$29").AutoFilter Field:=5, Criteria1:="<>"

Il n'y a pas de boucle, c'est inutile, l'AutoFiltre s'applique sur les en-tête et travaille ensuite sur l'ensemble du tableau. Si tu souhaite ajouter une boucle, n'utilise pas d'AutoFiltre et supprime directement les lignes indésirables avec l'instruction "Cells(i, 8).EntireRow.Delete"

j'ai essayer la formule modifier que tu m'a filer cela fonctionne mais il ne garde que ceux avec un "x" alors que moi je veut enlever toute les ligne qui comporte qq chose dans la colonne ( en gros je veut l'inverse )

sait tu par quoi il faut remplacer le critère ?

"="

Merci, entre temps je m'en suis souvenue et cela fonctionne très bien

Je ne savais pas qu'on pouvait utiliser directement l'autofilter sans un tableau, je me coucherai moins bête

@+ sur le forum

Rechercher des sujets similaires à "crash lors execution filtre tableau"