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...

TooFatBoy

XLDnaute Barbatruc
Oui je confirme ;) (cf message#57)
Je dirais même cf #28 du 04/03/2022.

message qui contenait à peu près ceci :
Enrichi (BBcode):
Sub Activer_Filtrage()

    Application.ScreenUpdating = False

    ' Définition de la zonne de filtrage (de la ligne 5 jusqu'à la dernière ligne de la colonne A)
    Set MaZone = ActiveSheet.Range("A5:Z" & Cells(Rows.Count, 1).End(xlUp).Row)

    ' Sélection du filtrage en fonction de la valeur de la cellule Q5
    Select Case Range("Q5").Value
    Case 2  ' J = date et K = vide
        MaZone.AutoFilter Field:=10, Criteria1:=">=1"
        MaZone.AutoFilter Field:=11, Criteria1:="="
    Case 3  ' J = vide et K = vide
        MaZone.AutoFilter Field:=10, Criteria1:="="
        MaZone.AutoFilter Field:=11, Criteria1:="="
    Case 4  ' J = date et K = date
        MaZone.AutoFilter Field:=10, Criteria1:=">=1"
        MaZone.AutoFilter Field:=11, Criteria1:=">=1"
    Case 5  ' J = vide et K = vide et L = vide
        MaZone.AutoFilter Field:=10, Criteria1:="="
        MaZone.AutoFilter Field:=11, Criteria1:="="
        MaZone.AutoFilter Field:=12, Criteria1:="="
    Case 6  ' J = "NPR"
        MaZone.AutoFilter Field:=10, Criteria1:="NPR"
    Case 7  ' J = "RdV Fait"
        MaZone.AutoFilter Field:=10, Criteria1:="RdV Fait"
    Case 8  ' J = "RdV Fait Facturé"
        MaZone.AutoFilter Field:=10, Criteria1:="RdV Fait Facturé"
    End Select

    ' Masquage des flèches de filtrage des colonnes A à Z
    For MaCol = 1 To 26
        MaZone.AutoFilter Field:=MaCol, Visibledropdown:=False
    Next MaCol

    Application.ScreenUpdating = True

End Sub
 

Usine à gaz

XLDnaute Barbatruc
Re

Usine à gaz

bah, publie ton essai dans le fil, que l'on voit ou cela peut clocher ;)
voilà :
VB:
Sub FiltreData4()
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([a6], Cells(Rows.Count, "z").End(xlUp)).Select.AutoFilter Field:=i, Criteria1:="*", Visibledropdown:=False
    Range([a2], Cells(Rows.Count, "k").End(xlUp)).Select
    Next i
    For i = LBound(T) To UBound(T) Step 2
        Sheets("choix").Range([a6], Cells(Rows.Count, "z").AutoFilter Field:=T(i), Criteria1:=T(i + 1), Visibledropdown:=False
    Next i
    [a1].Select
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Usine à gaz
Que vient-faire le Select dans le caquelon ? ;)
Voici si j'étais dans ta tête ce que j'aurai pondu grâce à Staple ;)
VB:
Sub FiltreData_B()
Dim rng As Range
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
     With Sheets("choix")
        Set rng = .Range(.Cells(5, "A"), .Cells(Rows.Count, "J").End(xlUp))
     End With
     'MsgBox rng.Address '-< juste pour test
    
    'adpatation du code de Sylvanu
    For i = 1 To 10
        rng.AutoFilter Field:=i, Criteria1:="*", Visibledropdown:=False
    Next i
    For i = LBound(T) To UBound(T) Step 2
        rng.AutoFilter Field:=T(i), Criteria1:=T(i + 1), Visibledropdown:=False
    Next i
    [a1].Select
End Sub

Marcel32
Tu confirmes donc que Lionel est en fait un mix de Dalida et de Claude François

"Paroles, et paroles..."
"J'y pense et puis j'oublie,
J'y pense surtout quand je suis seul la nuit,
Et quand ton souvenir
Revient me faire souffrir
Très vite j'y pense et puis j'oublie."
NB: Ici l'oubli concerne le VBA pas la nana ;)
 

Usine à gaz

XLDnaute Barbatruc
Re

Usine à gaz
Que vient-faire le Select dans le caquelon ? ;)
Voici si j'étais dans ta tête ce que j'aurai pondu grâce à Staple ;)
VB:
Sub FiltreData_B()
Dim rng As Range
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
     With Sheets("choix")
        Set rng = .Range(.Cells(5, "A"), .Cells(Rows.Count, "J").End(xlUp))
     End With
     'MsgBox rng.Address '-< juste pour test
   
    'adpatation du code de Sylvanu
    For i = 1 To 10
        rng.AutoFilter Field:=i, Criteria1:="*", Visibledropdown:=False
    Next i
    For i = LBound(T) To UBound(T) Step 2
        rng.AutoFilter Field:=T(i), Criteria1:=T(i + 1), Visibledropdown:=False
    Next i
    [a1].Select
End Sub

Marcel32
Tu confirmes donc que Lionel est en fait un mix de Dalida et de Claude François

"Paroles, et paroles..."
"J'y pense et puis j'oublie,
J'y pense surtout quand je suis seul la nuit,
Et quand ton souvenir
Revient me faire souffrir
Très vite j'y pense et puis j'oublie."
NB: Ici l'oubli concerne le VBA pas la nana ;)
JM : ni l'un ,ni l'autre mais c'est un secret😅😂🤣
 

Staple1600

XLDnaute Barbatruc
Re

Usine à gaz
Maintenant que tu as les éléments (cf Marcel32 et bibi)
Que donnent tes derniers tests?

NB: la moindre des choses serait quand même que tu réutilises les codes qui te sont fournis dans tes précédentes discussions, histoire qu'on publie pas des solutions en vain.
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Re

Usine à gaz
Maintenant que tu as les éléments (cf Marcel32 et bibi)
Que donnent tes derniers tests?

NB: la moindre des choses serait quand même que tu réutilises les codes qui te sont fournis dans tes précédentes discussions, histoire qu'à force le gaz de ton usine finisse par ne plus sentir le gaz mais le foutage de g.e.le ;)
Ce qui est plus incommodant.
Re JM :)
Ton code fonctionne nickel et je t'en remercie :

VB:
Sub codeJM()
Dim rng As Range
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
     With Sheets("choix")
        Set rng = .Range(.Cells(5, "A"), .Cells(Rows.Count, "J").End(xlUp))
     End With
     'MsgBox rng.Address '-< juste pour test
    
    'adpatation du code de Sylvanu
    For i = 1 To 10
        rng.AutoFilter Field:=i, Criteria1:="*", Visibledropdown:=False
    Next i
    For i = LBound(T) To UBound(T) Step 2
        rng.AutoFilter Field:=T(i), Criteria1:=T(i + 1), Visibledropdown:=False
    Next i
    [a1].Select
End Sub
Mais si je veux filtrer que sur le 1er critère : "T = Array(1, "m"), là ça ne fonctionne plus et je ne sais pas modifier le code Grrr !!!!
lionel :)
 

Staple1600

XLDnaute Barbatruc
Re

Usine à gaz
Moi aussi, j'ai obtenu ce même code et en tenant compte de toutes les infos disponibles dans ton fil
Voici ce qu'aurai donner ton test
VB:
Sub codeJM_Bis_simplifié()
Dim F As Worksheet: Set F = Sheets("choix")
On Error Resume Next
Application.ScreenUpdating = False
With F.Range(F.Cells(5, "A"), F.Cells(Rows.Count, "J").End(xlUp))
        For i = 1 To 10
        .AutoFilter Field:=i, Visibledropdown:=False
        Next i
    .AutoFilter Field:=1, Criteria1:="M"
End With
[a1].Select
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

Usine à gaz
Si je reprends ton essai, si j'ai bien compris
(on ne filtre que sur M)
alors voici ce que cela peut donner en adaptant ton essai
VB:
Sub codeJM_filtrage_M()
Dim rng As Range
On Error Resume Next
    Application.ScreenUpdating = False
    ' Array par paires, N° de colonne puis filtre.
    T = Array(1, "m") ' critère M
     With Sheets("choix")
        Set rng = .Range(.Cells(5, "A"), .Cells(Rows.Count, "J").End(xlUp))
     End With
    'adpatation du code de Sylvanu
    For i = 1 To 10
        rng.AutoFilter Field:=i, Visibledropdown:=False
    Next i
    For i = LBound(T) To UBound(T) Step 2
        rng.AutoFilter Field:=T(i), Criteria1:=T(i + 1), Visibledropdown:=False
    Next i
    [a1].Select
End Sub
 

Usine à gaz

XLDnaute Barbatruc
Re

Usine à gaz
Moi aussi, j'ai obtenu ce même code et en tenant compte de toutes les infos disponibles dans ton fil
Voici ce qu'aurai donner ton test
VB:
Sub codeJM_Bis_simplifié()
Dim F As Worksheet: Set F = Sheets("choix")
On Error Resume Next
Application.ScreenUpdating = False
With F.Range(F.Cells(5, "A"), F.Cells(Rows.Count, "J").End(xlUp))
        For i = 1 To 10
        .AutoFilter Field:=i, Visibledropdown:=False
        Next i
    .AutoFilter Field:=1, Criteria1:="M"
End With
[a1].Select
End Sub
Ha ! JM : comment veux tu que je sois capable de faire ça, je ne parle même pas anglais et à mon âge c'est trop tard .... je teste :)
 

Usine à gaz

XLDnaute Barbatruc
Re

Usine à gaz
Si je reprends ton essai, si j'ai bien compris
(on ne filtre que sur M)
alors voici ce que cela peut donner en adaptant ton essai
VB:
Sub codeJM_filtrage_M()
Dim rng As Range
On Error Resume Next
    Application.ScreenUpdating = False
    ' Array par paires, N° de colonne puis filtre.
    T = Array(1, "m") ' critère M
     With Sheets("choix")
        Set rng = .Range(.Cells(5, "A"), .Cells(Rows.Count, "J").End(xlUp))
     End With
    'adpatation du code de Sylvanu
    For i = 1 To 10
        rng.AutoFilter Field:=i, Visibledropdown:=False
    Next i
    For i = LBound(T) To UBound(T) Step 2
        rng.AutoFilter Field:=T(i), Criteria1:=T(i + 1), Visibledropdown:=False
    Next i
    [a1].Select
End Sub
Merci JM les 2 codes fonctionnent super bien. Je n'aurais jamais pu le faire :)
Encore merci JM :)
 

Staple1600

XLDnaute Barbatruc
Re

Et donc pour redevenir moi-même ;)
VB:
Sub Dans_ma_tête_et_plus_dans_celle_de_Lionel()
Sheets("choix").Range(Sheets("choix").Cells(5, "A"), Sheets("choix").Cells(Rows.Count, "J").End(3)).AdvancedFilter Action:=1, CriteriaRange:=Range("L5:L6")
End Sub
NB: Usine à gaz
Si tu as bien suivi le déroulé du fil, tu sauras quel doit être le contenu de la cellule L6
avant de tester ce one-liner ;)
 

Discussions similaires

Statistiques des forums

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