Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Afficher/masquer des lignes en fonction d'un critère

telemarrk

XLDnaute Occasionnel
Bonjour,

Je souhaite afficher/masquer des lignes en fonction du choix fait en L1.

Exemple : si je choisis "Vente" en L1 je veux voir dans mon tableau que les ventes

Peut-on également lorsque l'on quitte le fichier que tous soient affichés ?

Merci
 

Pièces jointes

  • test-masque.xlsx
    14.5 KB · Affichages: 6
Solution
Alors, toutes les questions d'un coup, c'est mieux !
Dans la ligne
VB:
If Filtre <> "admin" Then ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:=Filtre
le Field représente le N° de la colonne à filtrer.
Si vous ajoutez une colonne à gauche, la colonne à filtrer devient la deuxième colonne.
Il faut alors modifier Field:=1 en Field:=2, etc.
Cordialement,

natorp

XLDnaute Barbatruc
Bjr telemarrk

Ce n'est pas déjà ce vous avez demandé ici :

Cordialement, Gérard
 

telemarrk

XLDnaute Occasionnel
Bonjour Natorp

Non, j'ai repris le même tableau.
La je ne veux pas filtrer sur un second tableau je veux juste savoir si l'on peut à l'aide d'un code VBA ou autre afficher et masque des lignes en fonction d'un critère.

Merci
 

telemarrk

XLDnaute Occasionnel
Gégé-45550,

Peut-on faire une dernière modification à ton fichier joint.
Je viens de m'apercevoir que lorsque l'on quitte il affiche la totalité du tableau en proposant d'enregistrer.
Je voudrais que si le dernier choix est par exemple "Vente" il reste sur vente.

Une dernière chose également, je compte adapter le code vba sur un autre fichier excel, peut-on remplacer "services" par "admin" sans souci.


Merci
 

Gégé-45550

XLDnaute Accro
re-Bonjour,
l'affichage complet correspond à la demande initiale :
Peut-on également lorsque l'on quitte le fichier que tous soient affichés ?
Pour supprimer cette action, il suffit d'effacer la procédure suivante dans ThisWorkbook :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1
End Sub
Pour la deuxième demande, pour que le code prenne en compte n'importe quel intitulé à la place de "Services", modifiez la procédure comme suit :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Filtre$
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [L1]) Is Nothing Then
        ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1
        Filtre = [L1]
        If Filtre <> ActiveSheet.ListObjects("Tableau1").HeaderRowRange(1) Then ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:=Filtre
    End If
End Sub
Cordialement,
 

Discussions similaires

Réponses
3
Affichages
309
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…