Vba filtre

Résolu/Fermé
celi83 - 24 mai 2010 à 20:28
eriiic
Messages postés
24393
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
- 26 mai 2010 à 09:44
Bonjour,

Je voudrais créer une requete permattant de saisir des mots clé et que cette saisie serve de critère dans un filtre personnalisé (la saisie n'étant pas strictement identique au contenu des cellules, il faut qu'elle corresponde au "contient") .
Voilà le code auquel je suis arrivée:

Sub FiltreAuto()
Dim Crit
Crit = Range(InputBox("entrez un mot clé", "RECHERCHE", 0)).Value
ActiveSheet.Range("$F$3:$F$17").AutoFilter Field:=1, Criteria1:="*" & Crit & "*"
End Sub

Seulement il me répond erreur '1004'...

Est-ce que quelqu'un pourrait m'aider? Je débute sur VBA et je ne comprends pas l'erreur...

Merci à tous ceux qui auront le courage de me répondre...


2 réponses

eriiic
Messages postés
24393
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
7 078
24 mai 2010 à 21:02
Bonjour,

Range() attend une référence sous forme de chaine (ou sous une autre forme).
Toi tu lui passes un mot j'ai l'impression. Si dans la saisie tu lui passes B3 et qu'en B3 tu as saisis ton mot clé ça marcherait.
Mais je pense que tu veux plutôt lui passer directement le mot clé et alors
Crit = InputBox("entrez un mot clé", "RECHERCHE", 0) suffit

eric
0
Merci beaucoup d'avoir pris le temps de me répondre. Cela fonctionne (enfin!) !!
Ca doit vous sembler ridicule comme question, mais il faut croire qu'il y a un début à tout...
Depuis toute à l'heure j'ai sorti les pagaies mais je me noie toujours... comment faire pour avoir un bouton pour accéder à cette fenetre input ? ça doit vraiment sembler ridicule comme question ...((
0
eriiic
Messages postés
24393
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
7 078
24 mai 2010 à 22:50
Tu dessines un bouton et dans les propriétés (clic-droit dessus) tu l'affectes à ta macro.
Mais tu peux mettre ton critère dans une zone texte (ou une cellule) et réagir au changement de valeur.
Regarde cet exemple.
0
Merci beaucoup, ça va beaucoup m'aider ! c'est plus facile avec un support. En tout cas merci beaucoup pour votre aide, j'ai déjà compris pas mal de choses aujourd'hui, et j'ai fait ma première macro qui marche !!
0
eriiic
Messages postés
24393
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
7 078
24 mai 2010 à 23:19
tout le monde a démarré comme ça... ;-)
Bonne continuation
0
Encore une petite question... Dans cet exemple quel est le lien entre les zone de saisie pour le filtre et les codes? Je m'explique, si je copie-colle tout le code sur un autre projet : pas de zone de texte, si je vais sur une zone de texte pour affecter une macro, je n'en vois pas. Qu'est-ce qui m'échappe?
Je souhaiterais par exemple m'inspirer du bouton pour supprimer les filtres mais je ne comprends pas sa construction...
0
eriiic
Messages postés
24393
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
26 mai 2022
7 078
26 mai 2010 à 09:44
Bonjour,

Si tu ne l'as pas déjà fait affiche la barre d'outils 'boite à outils controle'
Dessus active l'icone 'mode création' (crayon-équerre-regle)
Si tu double-clique sur une zone de texte ça t'amène sur le code de l'evenement par défaut de l'objet.
Ici Private Sub Tbx1_Change() : à chaque saisie dans Tbx1 ce code est appelé.
Pour l'objet Tbx1 je me sert aussi de l'évènement 'DblClick'.
En haut de ton code : 2 listes déroulantes.
- celle de gauche : la liste des objets
- celle de droite la liste des évènements interceptables de cet objet

Par curiosité regarde ceux de l'objet worksheet (c'est ta feuille).
Tu pourrais très bien te passer des zones de texte et mettre du code dans les évènements 'change' et 'beforeDoubleClick'. Il te faudrait tester la cellule ayant déclenché l'évènement et mettre le code ensuite...

eric
0