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
Une dernière question promis.

Si ma requête se trouve sur la feuil2 et doit intervenir sur la feuil1 je modifie quoi dans le code.

J'ai essayé en ajoutant sheets ("feuil1")

Mais cela ne fonctionne pas, je débute.
Si c'est juste le tableau qui est sur une autre feuille, par exemple 'Feuil2', a priori il suffit de remplacer ActiveSheet par le nom de la feuille où est situé le tableau :
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
        ThisWorkBook.Worksheets("Feuil2").ListObjects("Tableau1").Range.AutoFilter Field:=Colonne
        Filtre = [L1]
        If Filtre <> "Admin" Then ThisWorkBook.Worksheets("Feuil2").ListObjects("Tableau1").Range.AutoFilter Field:=Colonne, Criteria1:=Filtre
    End If
End Sub
Même quand on débute, il est important de chercher à comprendre le code pour pouvoir progresser ... et ne pas se contenter de le recopier.
Cordialement,
 

telemarrk

XLDnaute Occasionnel
Bonjour Gégé-45550,

C'est tout a fait ça.
Le fichier que j'ai joint à chaque fois m'a permis de voir si cela était possible et de comprendre.
Le but est d'appliquer le code VBA sur un autre fichier Excel où sur la première page en devra s'identifier et arriver sur une seconde feuille qui en fonction de l'identifiant affichera les lignes concernées.

Merci à toi mais également autres qui m'ont aidé.
 

telemarrk

XLDnaute Occasionnel
Je sais que j'avais dit une dernière question, mais j'ai modifié le code VBA en voulant qu'il m'affiche que les "Validé" en plus du choix fait en L1.

Cela fonction en y mettant cette ligne :

ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=7, Criteria1:="Validé"

Sauf quand je sélectionne "Admin", je voudrais également voir toutes les lignes et ce n'est pas le cas.


Merci
 

Pièces jointes

  • ok-test-masque.xlsm
    23.5 KB · Affichages: 4

Gégé-45550

XLDnaute Accro
Je sais que j'avais dit une dernière question, mais j'ai modifié le code VBA en voulant qu'il m'affiche que les "Validé" en plus du choix fait en L1.

Cela fonction en y mettant cette ligne :

ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=7, Criteria1:="Validé"

Sauf quand je sélectionne "Admin", je voudrais également voir toutes les lignes et ce n'est pas le cas.
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=7, Criteria1:="Validé"

Merci
Bonjour,
N'avez-vous pas remarqué que, en introduisant la ligne
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=7, Criteria1:="Validé"
vous introduisez un deuxième filtre sur la colonne "Suivi" (voir les petits entonnoirs à droite des titres) ?
Lorsque vous cliquez sur "Admin", vous supprimez bien le filtre sur la colonne "sg", mais le filtre sur la colonne "Suivi" est toujours actif.
Je vous laisse trouver comment supprimer aussi le filtre sur "Suivi", vous avez tous les éléments en votre possession.
Cordialement,
 

job75

XLDnaute Barbatruc
Bonsoir à tous,
Je vous laisse trouver comment supprimer aussi le filtre sur "Suivi", vous avez tous les éléments en votre possession.
Il me paraît préférable de tout revoir :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Filtre$, Colonne%
If Intersect(Target, [L1]) Is Nothing Then Exit Sub
Application.ScreenUpdating = False
With [Tableau1].ListObject.Range
    .AutoFilter 'affiche tout
    .AutoFilter 'affiche les boutons de filtre
    Filtre = [L1]
    If Filtre = "Admin" Then Exit Sub
    Colonne = [Tableau1[sg]].Column - .Column + 1
    .AutoFilter Field:=Colonne, Criteria1:=Filtre
    .AutoFilter Field:=Colonne + 4, Criteria1:="Validé"
End With
End Sub
 

Pièces jointes

  • ok-test-masque.xlsm
    23.9 KB · Affichages: 5
Dernière édition:

telemarrk

XLDnaute Occasionnel
Bonjour job75,

C'est parfait.
Comme je l'ai dit ce fichier me permet de faire différent test et j'ai même réussi grace à vous à n'afficher que les "valider" et "refusé" dans la colonne "suivi" en modifiant cette ligne :

.AutoFilter Field:=Colonne + 4, Criteria1:="Validé"

par

.AutoFilter Field:=Colonne + 4, Criteria1:="<>"

Ce qui me permet de ne pas tenir compte des cellules vide.

Merci à vous
 

Discussions similaires

Réponses
3
Affichages
289

Statistiques des forums

Discussions
314 714
Messages
2 112 139
Membres
111 436
dernier inscrit
jibusigor