Bonjour à tous,

Je vous présente mon problème VBA sur excel :

Je bosse sur un fichier avec plusieurs datas. J'ai un tableau de 11 colonnes (dont 3 masquées) et je souhaite, après avoir trié la colonne D et K,
apposer un filtre sur la colonne K (jusque là j'y suis parvenu) et refiltrer derrière sur la colonne L.

Ma macro s’exécute de la manière suivante : je calibre mon tableau ( range("C11:M361")), j'active le filtrage, je trie la colonne D par ordre alphabétique, puis ma colonne K par ordre croissant (ce sont des chiffres).

Ensuite, je filtre ma colonne K où je choisis de faire partir les valeurs indésirées ("-100"), puis je désire filtrer la colonne L et garder les valeurs entre 0,3 et 7,5, tout en conservant le filtre en colonne K précédemment exécuté.

LE PROBLÈME : Une fois que je finis de filtrer ma colonne L, tout le tableau est englouti dans le filtrage et plus rien n'apparait.

(NB : j'ai déjà tout fait à la main, ça fonctionne. En revanche, en faisant les mêmes opérations en code, hop, je n'ai plus rien qui apparait)

Si vous avez un élément de réponse, ce serait avec plaisir.

Merci pour votre attention.

Bien cordialement,

amorello.


Voici mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Option Base 1
Option Explicit
Sub screening_value()
    Dim value As Worksheet
    Dim tableau As Range
 
 
        Set value = ThisWorkbook.Worksheets("S. Value")
        Set tableau = value.Range(Cells(11, 3), Cells(Cells(1048576, 13).End(xlUp).Row, Cells(11, 20).End(xlToLeft).Column))
            If value.AutoFilterMode = True Then tableau.AutoFilter
 
            tableau.AutoFilter
            value.AutoFilter.Sort.SortFields.Clear
                With value.AutoFilter.Sort.SortFields
                    .Add Key:=Range(Cells(12, 4), Cells(Cells(12, 4).End(xlDown).Row, 4)), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
                    .Add Key:=Range(Cells(12, 11), Cells(Cells(12, 11).End(xlDown).Row, 11)), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
                End With
 
                    tableau.AutoFilter Field:=9, Criteria1:="<>-100"
                    tableau.AutoFilter Field:=10, Criteria1:=">=0,3", Operator:=xlAnd, Criteria2:="<=7,5"
 
End Sub