Recherche et filtrage dynamics dans Excel

Actuellement, j'expérimente avec des barres de search dynamics et un filtrage dans Excel. J'ai trouvé un bon tutoriel qui utilise une table et un champ de text Active-X. Je l'ai recréé et ça fonctionne sûrement. Mon problème est cependant qu'il ne prend en count qu'une seule colonne. Maintenant, j'ai créé une autre table et une autre barre de search, pensant que cela fonctionnerait aussi bien, mais pour une raison quelconque, cela ne l'est pas. Voici le problème: l'set de données ressemble à ceci; entrez la description de l'image ici Recherche de cellules contenant "1" dans "addr1" (fonctionne normalement): entrez la description de l'image ici La search de cellules contenant "1" dans "addr2" (ne fonctionne pas): entrez la description de l'image ici

J'ai essayé de définir le format au text, au général, au numéro etc. mais rien ne semble avoir aucun effet. La deuxième search devrait également répertorier les cellules contenant "123", mais ce n'est pas le cas.

Code VBA dans la feuille:

Private Sub TextBox1_Change() ActiveSheet.ListObjects("address1").Range.AutoFilter Field:=1, Criteria1:="*" & [A1] & "*", Operator:=xlFilterValues End Sub Private Sub TextBox2_Change() ActiveSheet.ListObjects("address2").Range.AutoFilter Field:=1, Criteria1:="*" & [B1] & "*", Operator:=xlFilterValues End Sub 

Quelqu'un a-t-il une solution?

Mon file exemple peut être trouvé ici: https://www.dropbox.com/s/b4hpsczrhjbe2is/searchbar.xlsm?dl=0

Merci de vos commentaires!

Dans le deuxième code:

 Private Sub TextBox2_Change() ActiveSheet.ListObjects("address2").Range.AutoFilter Field:=1, Criteria1:="*" & [B1] & "*", Operator:=xlFilterValues End Sub 

Vous devez modifier le Field:=1 sur Field:=2 , sinon vous allez chercher le contenu à TextBox2_Change à la colonne addr1 .

Le problème auquel vous faites face est que le filter "*1*" ne correspond que aux strings, pas aux numbers. Même si vous formatez vos cellules en tant que Text , les numéros déjà entrés seront encore analysés en tant que nombres; Ils ne seront pas convertis en cordes. Vous avez deux façons d'entrer un nombre en tant que string:

  • entrez-le dans la cellule après que vous l'avez formé comme Text

  • entrez-le précédé de certains ' (devis unique). c'est-à-dire '123 . Cela obligerait Excel à le prendre en tant que string, même si le format de la cellule est General .

Pour l'instant, vous pouvez écrire une macro simple pour convertir toutes datatables de votre table en cordes et procéder à partir de là.

Enfin, je ne comprends pas pourquoi vous définissez un tableau différent pour chacune des trois colonnes adjacentes. Vous devez créer une seule table avec trois colonnes.

Essayez ces deux échantillons. Voir les images ci-dessous pour avoir une idée de leur fonctionnement.

http://www.mediafire.com/file/1ozjpza6zx0gav8/FastFilter.xls

http://www.mediafire.com/file/u7la5pdx8qtxzm5/Filter_using_Event_Code.xlsb

entrez la description de l'image ici

entrez la description de l'image ici