Microsoft 365 Filtrer un tableau à partir de la selection d'une cellule

Vins74000

XLDnaute Nouveau
Bonjour à tous,

J'ai déjà pas mal cherché sur les fils de discussion existant, mais je n'arrive pas a appliquer les solutions proposées à mon fichier, j'aurais bien besoin de votre aide d'experts!
Apres plusieurs essais avec des codes trouvés ici et ailleurs, je bloque toujours.

Dans le fichier joint, je souhaites afficher dans l'onglet "suivi menuiserie" uniquement les lignes dont la série à été sélectionnée.
Pour la sélectionner, j'ai créé une liste dans l'onglet "menu" ou s'affiche toutes les séries de "suivi menuiserie" qui ont été enregistrées.

est ce que vous pourriez m'aider ?
j'aime comprendre ce que je fais, si en plus je pouvais avoir quelques explications sur le fonctionnement de la solution proposée, ce serait magique! (c'est bientôt Noel!! ;) )
 

Pièces jointes

  • PLANNING v5.xlsm
    85.4 KB · Affichages: 11

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Dans le code de la feuille 'Menu' du fichier joint, vous trouverez cette simple macro de filtrage de votre tableau.
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address(0, 0) = "C4" And Not IsEmpty(Target) Then
        ' Filtrage par numéro de série du tableau
        Sheets("Suivi menuiserie").ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:=Target.Value
    End If
End Sub

Cordialement

P.S. Hello l'agrafe :) Idem, n'ai pas pu me servir de la liste de validation.

[Edit] Hello @cp4
 

Pièces jointes

  • PLANNING v5.xlsm
    93.8 KB · Affichages: 5

Staple1600

XLDnaute Barbatruc
Re, Bonjour cp4 ;), Roblochon ;)

Après mon café, j'ai repris conscience ;)
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim crit
If Target.Address = "$C$4" Then
crit = Target.Value
Feuil3.Activate
ActiveSheet.ListObjects("Tableau1").Range.AutoFilter Field:=1, Criteria1:=crit, Operator:=xlAnd
End If
End Sub
NB: je crois que je vais finir par sortir les sous pour upgrader mon Excel ;)
Test OK sur mon Excel 2013
(Mais j'ai du faire ma propre liste de validation à la mimine sans utiliser UNIQUE)
;)
 

cp4

XLDnaute Barbatruc
Re,

Quelle est la version de ton Excel?
Comme ta liste la formule de validation ni chez moi (Excel2010), ni chez Staple (Excel2013).
Tu peux ajouter ce code pour la liste de validation. Qui, je suppose fonctionnera chez toi aussi.
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Rng As Range, c as range, d as object

With Sheets("Suivi menuiserie")
Set Rng = .Range("A6:A" & .Range("A" & Rows.Count).End(xlUp).Row)
End With
 
If Target.Address = "$C$4" Then
    Set d = CreateObject("Scripting.Dictionary")
    For Each c In Rng: d(c.Value) = "": Next c
    Target.Validation.Delete
    Target.Validation.Add xlValidateList, Formula1:=Join(d.keys, ",")
  End If
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 182
dernier inscrit
moutassim.amine