Microsoft 365 filtre : masquer les indicateurs de filtre sans perdre le filtrage

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous :)

Tien, tien, revoilou "l'usine à gaz" lol ;)
Je reviens pour le casse-neurones du WE lol ...
C'est mapomme et patricktoulon qui vont être contents lol

Comme l'indique le titre du fil : je souhaiterais pouvoir masquer les indicateurs de filtre sans perdre le filtrage.
1647013510733.png

J'ai beaucoup cherché sans trouver de solution ... enfin si, il y en a une : il suffit de mettre à hauteur 0 la 1ère ligne de filtrage.

Mon souci est que dans dans mon fichier de travail "autrement dit : ma zizine à gaz", il n'y a pas de ligne ligne que je pourrai mettre à hauteur 0.
(j'l'avais pas prévu s'coup-là Grrrr !!! :mad::mad::mad: purée de moi) ... Et insérer une ligne vide m'obligerait à recoder beaucoup mon fichier.

Auriez-vous une solution ? Ce serait super !

Un grand merci par avance, je joins un fichier test et je continue mes recherches.
Amicalement,
lionel :)
 

Pièces jointes

  • 01 Filtre_JBB.xlsm
    43.2 KB · Affichages: 10
Solution
Re, Bonsoir Marcel, Staple,
Je persévère, je n'ai jamais eu cette idée. Formation continue :)
Peut être en utilisant la propriété Visibledropdown:=False
VB:
Sub FiltreData()
On Error Resume Next
    Application.ScreenUpdating = False
    T = Array(3, 4, 5, 6, 7, 9)
    With Sheets("choix").Range("A5:J10000")
        .AutoFilter Field:=1, Criteria1:="m", Visibledropdown:=False
        .AutoFilter Field:=2, Criteria1:="ca", Visibledropdown:=False
        .AutoFilter Field:=8, Criteria1:="3118", Visibledropdown:=False
        .AutoFilter Field:=10, Criteria1:="el", Visibledropdown:=False
        For i = 0 To UBound(T)
            .AutoFilter Field:=T(i), Criteria1:="*", Visibledropdown:=False
        Next i
    End With
    [a1].Select
End...

Usine à gaz

XLDnaute Barbatruc
Re,
Ici on ne met que les filtres utiles.
VB:
Sub FiltreData()
On Error Resume Next
    Application.ScreenUpdating = False
    ' Array par paires, N° de colonne puis filtre.
    T = Array(1, "m", 2, "ca", 8, "3118", 10, "El")
    For i = 1 To 10
        Sheets("choix").Range("A5:J10000").AutoFilter Field:=i, Criteria1:="*", Visibledropdown:=False
    Next i
    For i = LBound(T) To UBound(T) Step 2
        Sheets("choix").Range("A5:J10000").AutoFilter Field:=T(i), Criteria1:=T(i + 1), Visibledropdown:=False
    Next i
    [a1].Select
End Sub
@lionel, le filtre avancé de Staple semble séduisant, non ?
Merci sylvanu C'est super simple comme ça et facilement intégrable dans mon fichier de travail :)
lionel :)
 

Staple1600

XLDnaute Barbatruc
Re, Bonjour sylvanu, Marcel32

Sylvanu
Je ne sais pas si c'est séduisant mais filtre auto ou avancé, à mon sens, les piloter par VBA (et connaissant Lionnel;) (*)) sera compliqué à maintenir
En toute logique, et me rappelant que le "vrai classeur" aura comme utilisateurs finaux, les collègues de Lionnel, privilégier la formation sur l'utilisation manuelle du filtre (auto ou avancé) serait la piste à suivre.

(*) Les critères de filtre et la plage à filtrer ont déjà évolué entre le message#1 et maintenant
Donc contraignant de devoir amender les changements dans le VBA.
 

Usine à gaz

XLDnaute Barbatruc
As-tu au moins vu que le masquage des flèches de filtrage se faisait en même temps que le filtrage de chaque colonne, et qu'il fallait donc dans ce cas faire un masquage à part pour les autres flèches ?!?

Si tu enlèves le masquage des flèches lors du filtrage de chaque colonne et que tu masques (avant ou après le filtrage) tes 26 flèches, tu obtiendras le même résultat, mais avec un code plus simple.

Autrement dit, tu utilises ce que je t'ai donné au départ...
Mais bon... vu que c'est moi qui te l'ai donné, c'est forcément pourri...
Donc attends que Job te donne une solution et ce sera parfait !
Bonjour Marcel, Ne dis pas ça ! Ce n'est pas du tout ma pensé et j'ai gardé ta version. D'ailleurs c'est grâce à toi et à Phil que j'ai pu avancer au départ du fil :)
 

Staple1600

XLDnaute Barbatruc
Re

Marcel32
Je voulais dire que si les critères de filtre évoluent N fois alors il faudra modifier N fois le code VBA
Alors que manuellement et intuitivement, il suffit de cocher/décocher ou choisir Filtre textuel et spécifier ses conditions de filtres.
Ce qui est quand même plus simple et mois chronophage, non ?
Et comme dit précédemment (Usine à gaz confirmera ou pas), son fichier est utilisé par plusieurs personnes de sa société.
 

TooFatBoy

XLDnaute Barbatruc
Bonjour Marcel, Ne dis pas ça ! Ce n'est pas du tout ma pensé et j'ai gardé ta version.
Je veux bien te croire. Mais...

Rappel des faits :
1- Tu as demandé de l'aide pour faire des filtrages. Je t'ai donné une possibilité utilisant les filtres d'Excel et pour faire plus joli j'avais ajouté le masquage des flèches de filtrage. Tu as dis que les filtrages marchaient bien.

2- Tu as ensuite ouvert un autre fil de discussion pour dire que ce qu'on t'avait proposé marchait bien, mais que grâce à tes multiples recherches à travers le Net tout entier, tu avais fini par trouver une solution miracle, fabuleuse et hyper simple : utiliser les filtres d'Excel.
Autrement dit, c'était exactement la même chose que ma proposition deux jours plus tôt (sauf que ça ne masquait pas les flèches de filtrage) !

3- Puis tu as ouvert un nouveau fil de discussion (ici-même) pour demander comment masquer les flèches de filtrage, alors que je t'avais dès le départ donné une possibilité de faire ça !
Et la solution trouvée ici est exactement la même (en un peu moins simple) que celle que j'avais donnée au départ.


Avoue que ça donne quand même un peu l'impression que quand ça vient de moi ça ne te convient pas, mais que quand ça vient de quelqu'un d'autre c'est parfait pour toi... N'est-il pas ??? 🤔


Mais bon, le principal reste quand même que tu aies une solution qui te convienne.

Longue vie et prospérité 🖖
 

Usine à gaz

XLDnaute Barbatruc
Re-sylvanu,

J'ai plusieurs niveaux de filtrage à faire et je n'arrive pas à modifier ton code et lol, j'ai plusieurs questions :)
Peux-tu encore voir :
1 - modif code :
VB:
Sub FiltreData()
On Error Resume Next
    Application.ScreenUpdating = False
    ' Array par paires, N° de colonne puis filtre.
    T = Array(1, "m", 2, "ca", 8, "3118", 10, "El") 'infos critères
    For i = 1 To 10
        Sheets("choix").Range("A5:J10000").AutoFilter Field:=i, Criteria1:="*", Visibledropdown:=False
    Next i
    For i = LBound(T) To UBound(T) Step 2
        Sheets("choix").Range("A5:J10000").AutoFilter Field:=T(i), Criteria1:=T(i + 1), Visibledropdown:=False
    Next i
    [a1].Select
End Sub
Je voudrais, par exemple, filtrer uniquement à ce niveau : T = Array(1, "m") comment je dois modifier le code ,
- à koi correspond "For i = 1 To 10"
- à koi correspond "For i = LBound(T) To UBound(T) Step 2"
- enfin lol, peut-on faire jusqu'à la dernière ligne non vide ".Cells(.Rows.Count, 1).End(xlUp).Row"
Je te remercie,
lionel :)
 

Staple1600

XLDnaute Barbatruc
Re

Usine à gaz
C'est largement à ta portée ...
VB:
Sub Test_Lionel()
Range("A5:J10000") = "test"
MsgBox ActiveSheet.Range("A5:J10000").Address
MsgBox ActiveSheet.Range(Cells(5, "A"), Cells(Rows.Count, "J").End(xlUp)).Address
End Sub
Maintenant que tu as la syntaxe tu peux adapter pour le VBA avec l'autofilter.
 

Discussions similaires

Statistiques des forums

Discussions
315 080
Messages
2 116 004
Membres
112 636
dernier inscrit
fred 1969