Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBA] Filtre multicritères

8 réponses
Avatar
HD
Bonjour,

J'ai un tableau sur lequel je voudrais appliquer plusieurs filtres. Pour
les filtres simples pas de souci... par contre j'ai le cas d'un filtre
multicritères pour lequel je voudrais sélectionner tous les critères
sauf 2 bien spécifiques.

Exemple :

Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.AutoFilter Field:=1, Criteria1:="Absence"

Filt1 = "Divers"
Filt2 = "TP"
Selection.AutoFilter Field:=2, Criteria1:="<>" & Filt1,
Criteria2:="<>" & Filt2, Operator:=xlAnd

Le filtre du champ 1 fonctionne... par contre, le filtre du champ 2 ne
m'exclue pas les lignes avec "Divers" et "TP"...

Merci pour votre aide,

@+
HD

8 réponses

Avatar
DanielCo
Bonjour,
Peux-tu pposter un exemple ?
Daniel
Après mûre réflexion, HD a écrit :
Bonjour,

J'ai un tableau sur lequel je voudrais appliquer plusieurs filtres. Pour les
filtres simples pas de souci... par contre j'ai le cas d'un filtre
multicritères pour lequel je voudrais sélectionner tous les critères sauf 2
bien spécifiques.

Exemple :

Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.AutoFilter Field:=1, Criteria1:="Absence"

Filt1 = "Divers"
Filt2 = "TP"
Selection.AutoFilter Field:=2, Criteria1:="<>" & Filt1, Criteria2:="<>" &
Filt2, Operator:=xlAnd

Le filtre du champ 1 fonctionne... par contre, le filtre du champ 2 ne
m'exclue pas les lignes avec "Divers" et "TP"...

Merci pour votre aide,

@+
HD
Avatar
Jacky
Bonjour HD,

Testes comme ceci
'--------------
Filt1 = "Divers"
Filt2 = "TP"
Selection.AutoFilter Field:=2, Criteria1:="<>" & Filt1 _
, Operator:=xlAnd, Criteria2:="<>" & Filt2
'--------------

--
Salutations
JJ

HD a exposé le 25/11/2015 :
Bonjour,

J'ai un tableau sur lequel je voudrais appliquer plusieurs filtres. Pour les
filtres simples pas de souci... par contre j'ai le cas d'un filtre
multicritères pour lequel je voudrais sélectionner tous les critères sauf 2
bien spécifiques.

Exemple :

Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.AutoFilter Field:=1, Criteria1:="Absence"

Filt1 = "Divers"
Filt2 = "TP"
Selection.AutoFilter Field:=2, Criteria1:="<>" & Filt1, Criteria2:="<>" &
Filt2, Operator:=xlAnd

Le filtre du champ 1 fonctionne... par contre, le filtre du champ 2 ne
m'exclue pas les lignes avec "Divers" et "TP"...

Merci pour votre aide,

@+
HD
Avatar
HD
Testes comme ceci
'--------------
Filt1 = "Divers"
Filt2 = "TP"
Selection.AutoFilter Field:=2, Criteria1:="<>" & Filt1 _
, Operator:=xlAnd, Criteria2:="<>" & Filt2
'--------------



Lorsque j'applique ce filtre j'ai toujours "Divers" et "TP" présent
parmi mon tableau sur la colonne considérée comme filtrée.

@+
HD
Avatar
HD
Testes comme ceci
'--------------
Filt1 = "Divers"
Filt2 = "TP"
Selection.AutoFilter Field:=2, Criteria1:="<>" & Filt1 _
, Operator:=xlAnd, Criteria2:="<>" & Filt2
'--------------



Lorsque j'applique ce filtre j'ai toujours "Divers" et "TP" présent
parmi mon tableau sur la colonne considérée comme filtrée.



Oups... autant pour moi. Le tableau est bien filtré et j'obtiens bien le
résultat souhaité.

Je me suis fait avoir par le fait qu'en consultant le filtre du champ 2
l'on voit toujours les éléments TP et Divers qui apparaissent dans la
liste...

Y'aurait il moyen de parcours les éléments de cette liste et de les
cocher ou non suivant ce que l'on souhaite plutôt que d'utiliser des
filtres textuels ? Le souci est que si l'utilisateur veut voir le filtre
il ne verra que la liste avec les éléments non cochés.

@+
HD
Avatar
Jacky
Re..3
Y'aurait il moyen de parcours les éléments de cette liste et de les cocher
ou non suivant ce que l'on souhaite plutôt que d'utiliser des filtres
textuels ?



A mon avis, non!
Ce serait remettre en cause le principe des filtres d'excel.
Cependant, il est possible de créer un nouveau tableau avec
l'extraction des éléménts visibles.
Eventuellement créer des listes de validation en cascade, mais cela,
c'est une autre question.
--
Salutations
JJ

HD a exposé le 26/11/2015 :
Testes comme ceci
'--------------
Filt1 = "Divers"
Filt2 = "TP"
Selection.AutoFilter Field:=2, Criteria1:="<>" & Filt1 _
, Operator:=xlAnd, Criteria2:="<>" & Filt2
'--------------



Lorsque j'applique ce filtre j'ai toujours "Divers" et "TP" présent parmi
mon tableau sur la colonne considérée comme filtrée.



Oups... autant pour moi. Le tableau est bien filtré et j'obtiens bien le
résultat souhaité.

Je me suis fait avoir par le fait qu'en consultant le filtre du champ 2
l'on voit toujours les éléments TP et Divers qui apparaissent dans la
liste...

Y'aurait il moyen de parcours les éléments de cette liste et de les cocher
ou non suivant ce que l'on souhaite plutôt que d'utiliser des filtres
textuels ? Le souci est que si l'utilisateur veut voir le filtre il ne
verra que la liste avec les éléments non cochés.

@+
HD
Avatar
Patrick
Hello à tous,

pourquoi ne pas déposer un fichier, ça serait plus simple non ?

Patrick


Le 25/11/2015 17:10, HD a écrit :
Bonjour,

J'ai un tableau sur lequel je voudrais appliquer plusieurs filtres. Pour
les filtres simples pas de souci... par contre j'ai le cas d'un filtre
multicritères pour lequel je voudrais sélectionner tous les critères
sauf 2 bien spécifiques.

Exemple :

Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.AutoFilter Field:=1, Criteria1:="Absence"

Filt1 = "Divers"
Filt2 = "TP"
Selection.AutoFilter Field:=2, Criteria1:="<>" & Filt1,
Criteria2:="<>" & Filt2, Operator:=xlAnd

Le filtre du champ 1 fonctionne... par contre, le filtre du champ 2 ne
m'exclue pas les lignes avec "Divers" et "TP"...

Merci pour votre aide,

@+
HD




---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
Avatar
DanielCo
Bonsoir,
Un exemple :
http://1drv.ms/1Sn1nT4
Sub test()
Dim Tabl() As String, C As Range, Ctr As Integer
ReDim Tabl(1 To 1)
Ctr = 0
For Each C In Range("A2", Cells(Rows.Count, 1).End(xlUp))
If Not IsNumeric(Application.Match(C.Value, Tabl, 0)) Then
If C.Value <> "td" And C.Value <> "Divers" Then
Ctr = Ctr + 1
ReDim Preserve Tabl(1 To Ctr)
Tabl(Ctr) = C.Value
End If
End If
Next C
Range("A1", Cells(Rows.Count, 1).End(xlUp)).AutoFilter 1, Tabl,
Operator:=xlFilterValues
End Sub

Daniel

Y'aurait il moyen de parcours les éléments de cette liste et de les cocher ou
non suivant ce que l'on souhaite plutôt que d'utiliser des filtres textuels ?
Le souci est que si l'utilisateur veut voir le filtre il ne verra que la
liste avec les éléments non cochés.

@+
HD
Avatar
HD
Merci. C'est exactement ce que je recherche à faire.

Je vais adapter cette macro à mon fichier.

@+
HD