XL 2019 Filtre dynamique (VBA) sur des colonnes avec le format número or date

Etevaldo Santos

XLDnaute Nouveau
Bonjour, depuis le Brésil;

J'espère que vous allez tous bien et que vous êtes en bonne santé.

Encore une fois j’ai m’adresse à vous pour supplier l’aide sur un projet VBA que me bloque.

J'ai un tableau avec les enregistrements des personnes/clientes avec tous leurs donnes (nom, code postale, adresse, téléphone, e-mail, ...).

Ce tableau il a donc plusieurs lignes pour classer ces donnes, où toutes les colonnes il a des Filtres.

j'ai fait un code VBA pour faire un tri plus dynamique:

Sur la feuille de mon tableau il a pour chaque colonne un TextBox associé, où l'utilisateur peux saisir son texte de recherche.

Le tableau alors se met à jour au fur et mesure que le texte est saisi dans le TextBox, en prenant compte du texte contenant sur les cellules selon le texte saisie.

VB:
'Filtro 3 - Coluna E
Private Sub TextBox3_Change()
70     Selection.AutoFilter Field:=3, Criteria1:="=*" & TextBox3.Text & "*", Operator:=xlAnd
End Sub

Private Sub TextBox3_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
80    TextBox3.Text = ""
90    Selection.AutoFilter Field:=3
End Sub

Ainsi l'utilisateur peut voir, en temps réelle, toutes les cellules qui contiens (n’importe où dans la cellule) le texte au moment de leur saisie sur le TextBox.

Et voilà mon problème, puis que cela marche très bien sur tour les colonnes avec des donnes TEXTE, mais ça ne marche point sur les colonnes au format NUMERIQUE (quel que soit le format personnalisé - par exemple: 00000-000 pour le code postale), le retour sur les colonnes numériques est donc NULE (aucun linge est affiché) .

J'ai trouvé une solution palliative pour les cellules numériques, où le filtre est fait seulement SI la saisie du numéro soit EXACT.

Alors, dans ce cas, le retour des donnes est bien réduit, et alors cela ne me convient pas.

J'aimerais une solution, en VBA, que puisse burler cette limitation des cellules Numériques et de faire exactement la même chose que les cellules Texte, c'est ta dire, une mise à jour dynamique lors de la saisie de chaque numéro sur le TextBox

Un autre défi est précisément de faire fonctionner aussi le filtre dans les cellules formatées avec des dates, où leur da la saisi d'une valeur dans TextBox une mise á jour duynamique soit aussi faite.

Je disponibilise , en attaché, un fichier exemple avec les TextBox et les Macros mentionné ci-dessus.

Je vous remercie, encore une fois pour votre très grande collaboration sur ce sujet.

À très bientôt et soignez-vous
 

Pièces jointes

  • Registre des Clients.xlsm
    118.1 KB · Affichages: 16
Solution
Re,

Une version v2 qui permet d'utiliser le tiret (-) ou bien le slash "/" dans les critères de recherche.
Par exemple, testez pour le critère de la colonne D:
  • d'abord 102
  • puis -102
  • puis 102-
Et voyez la différence avec la version v1

ou bien,
testez pour la colonne F:
  • D'abord 05/
  • Puis 05/??/
  • Puis ??/05/
Et voyez la différence avec la version v1

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @Etevaldo Santos :),

On n'utilise pas la notion de filtre automatique ou avancé.
  • On lit les critères
  • on lit le tableau des données
  • On boucle sur les lignes du tableau
  • Si les données d'une ligne du tableau répondent aux 4 critères, alors on affiche la ligne sinon on masque la ligne.
Voir le code du module de la feuille "Registre des Clients".
 

Pièces jointes

  • Etevaldo Santos-Registre des Clients- v1.xlsm
    113.8 KB · Affichages: 14
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Une version v2 qui permet d'utiliser le tiret (-) ou bien le slash "/" dans les critères de recherche.
Par exemple, testez pour le critère de la colonne D:
  • d'abord 102
  • puis -102
  • puis 102-
Et voyez la différence avec la version v1

ou bien,
testez pour la colonne F:
  • D'abord 05/
  • Puis 05/??/
  • Puis ??/05/
Et voyez la différence avec la version v1
 

Pièces jointes

  • Etevaldo Santos-Registre des Clients- v2.xlsm
    115.2 KB · Affichages: 27
Dernière édition:

Etevaldo Santos

XLDnaute Nouveau
Re,

Une version v2 qui permet d'utiliser le tiret (-) ou bien le slash "/" dans les critères de recherche.
Par exemple, testez pour le critère de la colonne D:
  • d'abord 102
  • puis -102
  • puis 102-
Et voyez la différence avec la version v1

ou bien,
testez pour la colonne F:
  • D'abord 05/
  • Puis 05/??/
  • Puis ??/05/
Et voyez la différence avec la version v1
Bonsoir @mapomme,

Merci beaucoup pour votre précieuse aide sur ce sujet que me bloqué.

Votre solution est parfaite et ça me convient à la merveille, et surtout avec un en plus (v2) que j'ai n'attendais pas et vraiment ma flatté votre disponibilité de m'aider.

La cerise sur le gâteau c'est de pouvoir utiliser aussi le caractère spécial "*" a la place /ou avec des "?"

J'y vais inclure dans mon fichier une note pour vous remercier:

"Un grand merci pour mapomme, membre du forum https://www.excel-downloads.com, qu'aimablement a investi son temps pour élaborer ce code"

Merci encore et encore pour une réponse si vite et tellement précise.

A bientôt
 

CJA33

XLDnaute Nouveau
Re,

Une version v2 qui permet d'utiliser le tiret (-) ou bien le slash "/" dans les critères de recherche.
Par exemple, testez pour le critère de la colonne D:
  • d'abord 102
  • puis -102
  • puis 102-
Et voyez la différence avec la version v1

ou bien,
testez pour la colonne F:
  • D'abord 05/
  • Puis 05/??/
  • Puis ??/05/
Et voyez la différence avec la version v1

Bonjour,

Je me permets de rebondir sur cet échange afin de solliciter votre aide.

Je souhaiterais réaliser le même type de filtre dynamique au fur et à mesure de la saisie mais à partir d'une TextBox unique qui, pour une ligne donnée, testerait chacune des colonnes : la ligne doit être affichée si le texte saisi dans la TextBox est présent dans au moins une colonne (n’importe où dans la cellule).

J'ai essayé d'adapter le code proposé dans la version V2 pour réaliser ce type de filtre mais sans succès. Quelqu'un pourrait-il m'aiguiller sur la méthode à suivre pour arriver au résultat souhaité ?
 

Discussions similaires

Réponses
2
Affichages
114