XL 2013 (Résolu par Job75) Masquer flèches filtre

ismailo

XLDnaute Nouveau
Bonjour à tous,
dans le tableau ci-joint j'ai un code qui me permet de faire une recherche sur un TEXTBOX en utilisant le filtre automatique
ma question : est ce que c'est possible de modifier ma macro pour masquer les flèches de filtre de mon tableau qui sont sur les cellules A7 et B7

Cordialement
 

Pièces jointes

  • isma.xlsm
    21.7 KB · Affichages: 59

job75

XLDnaute Barbatruc
Re,

Pour la 1ère remarque, si l'on entre autre chose qu'un nombre dans TextBox1, Excel recherche un nom défini.

Si ce ne peut pas être un nom défini, comme le point, le tiret ou même 1a, il y a bug.

J'ai mis ce type de recherche pour votre gouverne, mais si vous n'aimez pas les bugs (ils sont pourtant utiles) utilisez la même formule que pour TextBox2 :
Code:
[AE3] = "=SEARCH(""" & TextBox1 & """,E3)" 'recherche de texte

Pour la 2ème remarque on peut tout afficher avant de filtrer, c'est sans doute plus rapide en effet :
Code:
Option Explicit
Dim flag As Boolean 'mémorise la variable

Private Sub TextBox1_Change()
If flag Then Exit Sub
If Me.FilterMode Then Application.ScreenUpdating = False: Me.ShowAllData
[AE3] = "=SEARCH(""" & TextBox1 & """,E3)" 'recherche de texte
[A2].CurrentRegion.AdvancedFilter xlFilterInPlace, [AE2:AE3]
[AE3] = ""
End Sub

Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
flag = True: TextBox1 = "": flag = False
If Me.FilterMode Then Me.ShowAllData
End Sub

Private Sub TextBox2_Change()
If flag Then Exit Sub
If Me.FilterMode Then Application.ScreenUpdating = False: Me.ShowAllData
[AE3] = "=SEARCH(""" & TextBox2 & """,F3)" 'recherche de texte
[A2].CurrentRegion.AdvancedFilter xlFilterInPlace, [AE2:AE3]
[AE3] = ""
End Sub

Private Sub TextBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
flag = True: TextBox2 = "": flag = False
If Me.FilterMode Then Me.ShowAllData
End Sub

A+
 

ismailo

XLDnaute Nouveau
C'est vraiment parfait votre travail
Je ne sais pas comment vous remercier,
J'ai une petite proposition pour la première remarque même si la dernière modification me va très bien.
Est ce qu'on peut garder la même ligne qui cherche juste les nombre et en remplace les messages de bug par un message qui nous rappelle à insérer juste des chiffres comme recherche...

Merci beaucoup encore une autre fois
 

job75

XLDnaute Barbatruc
Re,
Code:
Private Sub TextBox1_Change()
If flag Then Exit Sub
If TextBox1 <> "" And Not IsNumeric(TextBox1) Then MsgBox "Valeur non numérique !", 48: Exit Sub
If Me.FilterMode Then Application.ScreenUpdating = False: Me.ShowAllData
[AE3] = "=SEARCH(" & TextBox1 & ",E3)" 'recherche de nombre
[A2].CurrentRegion.AdvancedFilter xlFilterInPlace, [AE2:AE3]
[AE3] = ""
End Sub
A+
 

job75

XLDnaute Barbatruc
Re,

S'il en colonne E il y a des nombres décimaux à rechercher :
Code:
Private Sub TextBox1_Change()
If flag Then Exit Sub
On Error Resume Next
[AE3] = "=SEARCH(" & Replace(TextBox1, ",", ".") & ",E3)" 'recherche de nombre
If Err Then MsgBox "Valeur non numérique !", 48: Exit Sub
If Me.FilterMode Then Application.ScreenUpdating = False: Me.ShowAllData
[A2].CurrentRegion.AdvancedFilter xlFilterInPlace, [AE2:AE3]
[AE3] = ""
End Sub
A+
 

job75

XLDnaute Barbatruc
Bonjour ismailo, le forum,

Ce n'était pas complet, pour les matricules en colonne E il suffit de neutraliser les caractères non numériques :
Code:
Private Sub TextBox1_Change()
If flag Then Exit Sub
Dim t$, i&, x$
t = TextBox1
For i = 1 To Len(t)
  If IsNumeric(Mid(t, i, 1)) Then x = x & Mid(t, i, 1)
Next
flag = True: TextBox1 = x: flag = False
If Me.FilterMode Then Application.ScreenUpdating = False: Me.ShowAllData
[AE3] = "=FIND(" & TextBox1 & ",E3)" 'recherche de nombre
[A2].CurrentRegion.AdvancedFilter xlFilterInPlace, [AE2:AE3]
[AE3] = ""
End Sub
Bonne journée.
 

Discussions similaires

Réponses
6
Affichages
365

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 389
Messages
2 087 933
Membres
103 678
dernier inscrit
bibitm