Excel - Filtre automatique et élaboré

Fermé
Sesk Messages postés 6 Date d'inscription lundi 27 octobre 2008 Statut Membre Dernière intervention 17 novembre 2008 - 27 oct. 2008 à 18:24
Sesk Messages postés 6 Date d'inscription lundi 27 octobre 2008 Statut Membre Dernière intervention 17 novembre 2008 - 17 nov. 2008 à 15:54
Bonjour,

J'ai rencontré un problème concernant les filtres sur Excel.
En fait je souhaite créer une macro permettant de faire un pré-choix à l'intérieur d'un filtre automatique.
Pour cela j'ai mis en place un filtre automatique puis j'ai utlisé un filtre élaboré permettant de sélectionner x colonnes parmis toutes.
Malheureusement le filtre élaboré enlève le filtre automatique et si je le remets, le filtre automatique enlève cette fois ci le résultat du filtre élaboré.
j'ai l'impression que ces 2 filtres sont exclusifs. Peut-on y remédier, ou avez vous une autre proposition?


Exemple :

Etape 1 : Création du tableau avec mise en place du filtre automatique.
	A	B	C
1	Choix1 	Choix2	Choix3
2	x	1	a
3	x	1	b
4	x	1	c
5	x	2	a
6	x	2	b
7	x	2	c
8	y	3	a
9	y	3	b
10	y	3	c
11	y	1	a
12	y	1	b
13	y	1	c
14	z	2	a
15	z	2	b
16	z	2	c
17	z	3	a
18	z	3	b
19	z	3	c


Etape 2 : Création d'une macro permettant de faire un filtre automatique sur les Colonnes A et B (par exemple A=y et B=3).
	A	B	C
1	Choix1 	Choix2	Choix3
8	y	3	a
9	y	3	b
10	y	3	c


Etape 3 : Une fois le pré-choix fais j'aimerais concerver le filtre automatique pour qu'un utilisateur puisse choisir le "Choix3".

Cependant la macro filtre élaboré à enlever le filtre automatique et en essayant de le remettre manuellement ou par macro, cette fois ci c'est le filtre élaboré qui a été supprimé...


Je ne vois plus comment faire. Peut-être même que je n'ai pas utilisé les bonnes fonctions.

Merci d'avance
Sesk
A voir également:

10 réponses

Sesk Messages postés 6 Date d'inscription lundi 27 octobre 2008 Statut Membre Dernière intervention 17 novembre 2008 2
17 nov. 2008 à 15:54
Bonjour,

Merci bien pour la réponse. Encore une fois le problème est résolu.

Pour la même raison que précédemment, je ne clos pas le sujet.

Merci.
Sesk
1
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
27 oct. 2008 à 19:32
Je ne comprends pas trop. Si ta macro dit
Rows("1:1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="Y"
Selection.AutoFilter Field:=2, Criteria1:="3", Operator:=xlAnd


Ca applique le filtre, ça fait ton pré-choix, et le choix 3 reste dispo....
0
Sesk Messages postés 6 Date d'inscription lundi 27 octobre 2008 Statut Membre Dernière intervention 17 novembre 2008 2
28 oct. 2008 à 11:19
Bonjour,

Tout d'abord merci de cette réponse rapide.

Ci-après la macro que j'ai réalisée qui ne fonctionne pas :

Sub Essai()
    Range("A1:C19").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _
        Range("A22:C23"), Unique:=False
    Rows("1:1").Select
    ActiveSheet.ShowAllData
    Selection.AutoFilter
End Sub


1ère étape de la macro : Filtre évolué.
2ème étape de la macro : Mise en place du filtre automatique sur le pré-choix du filtre évolué.
Résultat : rien n'est fait ou du moins l'étape 2 a supprimé l'étape 1
Indépendamment ces étapes fonctionnent.

Merci
Sesk
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
28 oct. 2008 à 13:58
Essaye de faire ce que j'ai dit, alors.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sesk Messages postés 6 Date d'inscription lundi 27 octobre 2008 Statut Membre Dernière intervention 17 novembre 2008 2
28 oct. 2008 à 17:23
Merci bien pour ce renseignement
Je crois que je me suis imposé une contrainte inutile qui sert à rien : le filtre élaboré. En effet ta proposition me convient.
Petit bémol : la fonction " Criteria1:="Y" " renvoie les possibilités pour Y. J'aimerais que au lieu d'une valeur fixe Y on puisse lire la valeur d'une case sur un autre onglet.

Avec la commande " Criteria1:=Range("I1") ", je suis arrivé à faire lire la valeur x ou y ou z marqué en I1 mais désormais je souhaiterais connaître la commande pour aller lire la valeur en I1 d'un autre onglet.


PS : peux tu m'expliquer ce que fait la commande " Operator:=xlAnd " car j'ai l'impression que sans ça marche aussi.

Merci
0
LatelyGeek Messages postés 1758 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 5 janvier 2023 550
28 oct. 2008 à 17:59
Essaye Criteria1:=Range("FeuilX!I1")

Et pour le xlAnd, c'est juste que tu veux "Y" pour le champ 1 ET "3" pour le champ 2. L'autre opérateur serait xlOr. 9a marche sans parce que xlAnd est l'opérateur par défaut.
0
Sesk Messages postés 6 Date d'inscription lundi 27 octobre 2008 Statut Membre Dernière intervention 17 novembre 2008 2
29 oct. 2008 à 10:04
Bonjour,

Merci bien pour ces réponses. Le problème est résolu.

Je ne clos pas le sujet car mon projet n'est pas terminé et je risque d'avoir d'autre questions.

Encore un grand merci.
Sesk
0
Sesk Messages postés 6 Date d'inscription lundi 27 octobre 2008 Statut Membre Dernière intervention 17 novembre 2008 2
14 nov. 2008 à 17:51
Bon en effet j'ai bien fait de ne pas clore le sujet car j'ai rencontré un nouveau problème.

Après avoir fait tous mes choix dans un tableau j'ai créé une macro permettant de raz les choix pour repartir à neuf pour une nouvelle utilisation. Elle met : "afficher tout" pour les filtres.

Sheets("Quantité").Select
ActiveSheet.ShowAllData
Columns("I:M").Select
Selection.ClearContents
Range("A1").Select


Cette macro fonctionne bien mais bug si l'opérateur enlève manuellement le choix avant de lancer la macro.
On a essayer la commande :

Sheets("Quantité").Select
If ActiveSheet.ShowAllData = False Then     --> notre pb
   ActiveSheet.ShowAllData
   Columns("I:M").Select
   Selection.ClearContents
   Range("A1").Select
End If


Il semblerait que ActiveSheet.ShowAllData = False ne soit pas la bonne variable pour indiquer l'état du filtre.
Avez vous une solution?

Dans l'attente d'une réponse

Cordialement
Sesk
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
14 nov. 2008 à 19:46
Bonsoir,

traite l'erreur sans te poser de question :
on error resume next
ActiveSheet.ShowAllData
on error goto 0

eric
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
14 nov. 2008 à 23:38
bonjour

Il faut remplacer :

If ActiveSheet.ShowAllData = False Then --> notre pb

par

If ActiveSheet.FilterMode = True Then

et l'erreur ne se produit plus.
0