Excel - Filtre automatique et élaboré
Sesk
Messages postés
6
Date d'inscription
Statut
Membre
-
Sesk Messages postés 6 Date d'inscription Statut Membre -
Sesk Messages postés 6 Date d'inscription Statut Membre -
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.
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).
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
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
10 réponses
-
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 -
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....
-
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 -
Essaye de faire ce que j'ai dit, alors.
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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 -
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. -
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 -
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 -
Bonsoir,
traite l'erreur sans te poser de question :
on error resume next
ActiveSheet.ShowAllData
on error goto 0
eric -
bonjour
Il faut remplacer :
If ActiveSheet.ShowAllData = False Then --> notre pb
par
If ActiveSheet.FilterMode = True Then
et l'erreur ne se produit plus.