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

Filtre automatique personnalisé en VBA ?

4 réponses
Avatar
Laure
bonjour,

j'aurais voulu savoir s'il était possible de transcrire en VBA un filtre
automatique personnalisé ?

Je m'explique un peu mieux :
j'ai un tableau de plus de 5000 lignes, sur lequel je souhaite créer un
filtre automatique personnalisé avec pour critères "contient" et le mot...
Cela marche très bien en "manuel" mais j'aurais souhaité que les gens
puissent faire une recherche et cela de manière un peu plus simple avec une
inputbox, afin qu'ils rentrent directement le mot ou la partie de mot sur
lequel ils veulent faire leur recherche.

voici mon code :
nompdt = InputBox("Quel nom ?")
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=nompdt", Operator:=xlAnd
End Sub

seulement la recherche se fait alors uniquement si le critère est "égal"
alors que je veux "contient"...

Auriez-vous une idée ?

merci d'avance
Laure

4 réponses

Avatar
Laure
merci merci merci... ça marche nickel !!
en plus j'aurais dû y penser car je suis partie en stage VBA niveau 1 il y a
15 jours et donc on a vu cette instruction...
en tout cas merci beaucoup
Laure


Je te propose ceci :
On Error Resume Next
ActiveSheet.ShowAllData

Celà devrait répondre à ton attente


merci beaucoup pour la réponse et la rapidité... cela me convient très bien.

j'aurais une autre question, si je peux me permettre :
voilà dans un autre fichier j'ai un bouton RESET afin de supprimer un filtre
élaboré... il fonctionne bien sauf si on clique 2 fois de suite dessus (on a
alors la fenêtre de débogage)... je ne sais pas comment lui dire que si les
données du classeur ne sont pas filtrées alors pas la peine de faire le RESET
?

voici le code que j'utilise : ActiveSheet.ShowAllData

Laure


Salut Laure
Il suffit de rajouter dans la donnée de recherche le symbole * avant et aprés
soit dans ta macro comme ceci :
nompdt = InputBox("Quel nom ?")
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & nompdt & "*", Operator:=xlAnd
Inconvènient seule l'option "contient" pourra être utilisée comme critère de
recherche
soit dans la fenêtre de l'InputBox par l'utilisateur : il saisit par exemple
*Ma recherche*
ou tu peut par défaut l'y intégrer avec ce code :
nompdt = InputBox("Quel nom ?", , "**")
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=" & nompdt, Operator:=xlAnd
a charge à l'utilisateur de maintenir les caractères avec sa saisie
Avantage toutes les types de recherche peuvent être utilisés : =
"Recherche", contient "*Recherche*", commence "Recherche*", se termine
"*Recherche"
option nettement supérieure quant aux possibilités offertes

Celà te convient-il ???




bonjour,

j'aurais voulu savoir s'il était possible de transcrire en VBA un filtre
automatique personnalisé ?

Je m'explique un peu mieux :
j'ai un tableau de plus de 5000 lignes, sur lequel je souhaite créer un
filtre automatique personnalisé avec pour critères "contient" et le mot...
Cela marche très bien en "manuel" mais j'aurais souhaité que les gens
puissent faire une recherche et cela de manière un peu plus simple avec une
inputbox, afin qu'ils rentrent directement le mot ou la partie de mot sur
lequel ils veulent faire leur recherche.

voici mon code :
nompdt = InputBox("Quel nom ?")
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=nompdt", Operator:=xlAnd
End Sub

seulement la recherche se fait alors uniquement si le critère est "égal"
alors que je veux "contient"...

Auriez-vous une idée ?

merci d'avance
Laure








Avatar
FFO
Salut Laure
Il suffit de rajouter dans la donnée de recherche le symbole * avant et aprés
soit dans ta macro comme ceci :
nompdt = InputBox("Quel nom ?")
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & nompdt & "*", Operator:=xlAnd
Inconvènient seule l'option "contient" pourra être utilisée comme critère de
recherche
soit dans la fenêtre de l'InputBox par l'utilisateur : il saisit par exemple
*Ma recherche*
ou tu peut par défaut l'y intégrer avec ce code :
nompdt = InputBox("Quel nom ?", , "**")
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=" & nompdt, Operator:=xlAnd
a charge à l'utilisateur de maintenir les caractères avec sa saisie
Avantage toutes les types de recherche peuvent être utilisés : =
"Recherche", contient "*Recherche*", commence "Recherche*", se termine
"*Recherche"
option nettement supérieure quant aux possibilités offertes

Celà te convient-il ???




bonjour,

j'aurais voulu savoir s'il était possible de transcrire en VBA un filtre
automatique personnalisé ?

Je m'explique un peu mieux :
j'ai un tableau de plus de 5000 lignes, sur lequel je souhaite créer un
filtre automatique personnalisé avec pour critères "contient" et le mot...
Cela marche très bien en "manuel" mais j'aurais souhaité que les gens
puissent faire une recherche et cela de manière un peu plus simple avec une
inputbox, afin qu'ils rentrent directement le mot ou la partie de mot sur
lequel ils veulent faire leur recherche.

voici mon code :
nompdt = InputBox("Quel nom ?")
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=nompdt", Operator:=xlAnd
End Sub

seulement la recherche se fait alors uniquement si le critère est "égal"
alors que je veux "contient"...

Auriez-vous une idée ?

merci d'avance
Laure


Avatar
Laure
merci beaucoup pour la réponse et la rapidité... cela me convient très bien.

j'aurais une autre question, si je peux me permettre :
voilà dans un autre fichier j'ai un bouton RESET afin de supprimer un filtre
élaboré... il fonctionne bien sauf si on clique 2 fois de suite dessus (on a
alors la fenêtre de débogage)... je ne sais pas comment lui dire que si les
données du classeur ne sont pas filtrées alors pas la peine de faire le RESET
?

voici le code que j'utilise : ActiveSheet.ShowAllData

Laure


Salut Laure
Il suffit de rajouter dans la donnée de recherche le symbole * avant et aprés
soit dans ta macro comme ceci :
nompdt = InputBox("Quel nom ?")
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & nompdt & "*", Operator:=xlAnd
Inconvènient seule l'option "contient" pourra être utilisée comme critère de
recherche
soit dans la fenêtre de l'InputBox par l'utilisateur : il saisit par exemple
*Ma recherche*
ou tu peut par défaut l'y intégrer avec ce code :
nompdt = InputBox("Quel nom ?", , "**")
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=" & nompdt, Operator:=xlAnd
a charge à l'utilisateur de maintenir les caractères avec sa saisie
Avantage toutes les types de recherche peuvent être utilisés : =
"Recherche", contient "*Recherche*", commence "Recherche*", se termine
"*Recherche"
option nettement supérieure quant aux possibilités offertes

Celà te convient-il ???




bonjour,

j'aurais voulu savoir s'il était possible de transcrire en VBA un filtre
automatique personnalisé ?

Je m'explique un peu mieux :
j'ai un tableau de plus de 5000 lignes, sur lequel je souhaite créer un
filtre automatique personnalisé avec pour critères "contient" et le mot...
Cela marche très bien en "manuel" mais j'aurais souhaité que les gens
puissent faire une recherche et cela de manière un peu plus simple avec une
inputbox, afin qu'ils rentrent directement le mot ou la partie de mot sur
lequel ils veulent faire leur recherche.

voici mon code :
nompdt = InputBox("Quel nom ?")
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=nompdt", Operator:=xlAnd
End Sub

seulement la recherche se fait alors uniquement si le critère est "égal"
alors que je veux "contient"...

Auriez-vous une idée ?

merci d'avance
Laure




Avatar
cousinhub
Bonsoir,
avec l'instruction suivante peut-être :
On Error Resume Next
au début de ton code
Bon courage

merci beaucoup pour la réponse et la rapidité... cela me convient très bien.

j'aurais une autre question, si je peux me permettre :
voilà dans un autre fichier j'ai un bouton RESET afin de supprimer un filtre
élaboré... il fonctionne bien sauf si on clique 2 fois de suite dessus (on a
alors la fenêtre de débogage)... je ne sais pas comment lui dire que si les
données du classeur ne sont pas filtrées alors pas la peine de faire le RESET
?

voici le code que j'utilise : ActiveSheet.ShowAllData

Laure


Salut Laure
Il suffit de rajouter dans la donnée de recherche le symbole * avant et aprés
soit dans ta macro comme ceci :
nompdt = InputBox("Quel nom ?")
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=*" & nompdt & "*", Operator:=xlAnd
Inconvènient seule l'option "contient" pourra être utilisée comme critère de
recherche
soit dans la fenêtre de l'InputBox par l'utilisateur : il saisit par exemple
*Ma recherche*
ou tu peut par défaut l'y intégrer avec ce code :
nompdt = InputBox("Quel nom ?", , "**")
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=" & nompdt, Operator:=xlAnd
a charge à l'utilisateur de maintenir les caractères avec sa saisie
Avantage toutes les types de recherche peuvent être utilisés : =
"Recherche", contient "*Recherche*", commence "Recherche*", se termine
"*Recherche"
option nettement supérieure quant aux possibilités offertes

Celà te convient-il ???




bonjour,

j'aurais voulu savoir s'il était possible de transcrire en VBA un filtre
automatique personnalisé ?

Je m'explique un peu mieux :
j'ai un tableau de plus de 5000 lignes, sur lequel je souhaite créer un
filtre automatique personnalisé avec pour critères "contient" et le mot...
Cela marche très bien en "manuel" mais j'aurais souhaité que les gens
puissent faire une recherche et cela de manière un peu plus simple avec une
inputbox, afin qu'ils rentrent directement le mot ou la partie de mot sur
lequel ils veulent faire leur recherche.

voici mon code :
nompdt = InputBox("Quel nom ?")
Selection.AutoFilter
Selection.AutoFilter Field:=1, Criteria1:="=nompdt", Operator:=xlAnd
End Sub

seulement la recherche se fait alors uniquement si le critère est "égal"
alors que je veux "contient"...

Auriez-vous une idée ?

merci d'avance
Laure