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
Cela fonctionne également, Gégé-45550.

Est-ce que je peux me permettre de vous demander une dernière chose.

Si par exemple, j'ajoute une colonne à gauche de "services" intitulé "numéro" cela ne fonctionne plus.
Comment je peux y remédier car mon tableau va certainement évoluer en ajoutant des colonnes.

Merci
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,

Gégé-45550

XLDnaute Accro
Par contre, je souhaite intégrer dans la liste déroulante "Admin" qui aurait les mêmes attributs que "Services"
c'est ce que j'ai écrit :
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 :
VB:
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
[EDIT] En C2, modifiez "Services" par ce que vous voulez, par exemple "Admin" et regardez ce qui se passe.
 

Pièces jointes

  • test-masque.xlsm
    26.2 KB · Affichages: 2

telemarrk

XLDnaute Occasionnel
Cela fonctionne également, Gégé-45550.

Est-ce que je peux me permettre de vous demander une dernière chose.

Si par exemple, j'ajoute une colonne à gauche de "services" intitulé "numéro" cela ne fonctionne plus.
Comment je peux y remédier car mon tableau va certainement évoluer en ajoutant des colonnes.

Merci
 

Gégé-45550

XLDnaute Accro
Cela fonctionne également, Gégé-45550.

Est-ce que je peux me permettre de vous demander une dernière chose.

Si par exemple, j'ajoute une colonne à gauche de "services" intitulé "numéro" cela ne fonctionne plus.
Comment je peux y remédier car mon tableau va certainement évoluer en ajoutant des colonnes.

Merci
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,
 

job75

XLDnaute Barbatruc
.Bonjour à tous,

Pour ne pas avoir à modifier le code si l'on ajoute des colonnes déclarez une variable col et définissez-la :
VB:
col = [Tableau1[Services]].Column - [Tableau1].Column + 1
puis en dessous remplacez Field:=1 par Field:=col

A+
 

Gégé-45550

XLDnaute Accro
Désolé job75,

Mais cela ne fonctionne pas.
Re-bonjour,
mais bien sûr que si, ça marche !
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Filtre$, Colonne%
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [L1]) Is Nothing Then
        Colonne = [Tableau1[Services]].Column - [Tableau1].Column + 1
        ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=Colonne
        Filtre = [L1]
        If Filtre <> "Admin" Then ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=Colonne, Criteria1:=Filtre
    End If
End Sub
C'est une excellente suggestion qu'à faite @job75
Cordialement,
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 299
Membres
103 173
dernier inscrit
Cerba95