[VBA] Filtre multicritères

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
DanielCo
Le #26379537
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
Jacky
Le #26379565
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
HD
Le #26379610
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
HD
Le #26379617
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
Jacky
Le #26379623
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
Patrick
Le #26379677
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
DanielCo
Le #26379701
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 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
HD
Le #26379731
Merci. C'est exactement ce que je recherche à faire.

Je vais adapter cette macro à mon fichier.

@+
HD
Publicité
Poster une réponse
Anonyme