Filtrer les données d'un tableau par liste déroulante ?

  • Initiateur de la discussion Initiateur de la discussion Sbalteur
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Sbalteur

Guest
Bonjour,

Comment puis je pour filtrer les éléments de la colonne C en selectionnant la valeur désirée par la liste déroulante en C5..?

10 ans sans pratiquer excel et voila le résultat...

Merci d'avance.

Cordialement.
 

Pièces jointes

Dernière modification par un modérateur:
Re : Filtrer les données d'un tableau par liste déroulante ?

Bonjour Sbalteur et bienvenu, bonjour le forum,

Si une solution VBA te convient, ton fichier modifié avec le code ci-dessous :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$5" Then Exit Sub
Range("C7").AutoFilter Field:=1, Criteria1:=Target.Value
If Target.Value = "tous" Then Range("C7").AutoFilter Field:=1
End Sub
Le fichier :
 

Pièces jointes

Re : Filtrer les données d'un tableau par liste déroulante ?

Bonjour à vous et merci pour votre réponse.

Il persiste un petit soucis... En effet pour que l'affichage des données filtrées s'effectue il faut que je clique sur la cellule C5 (comme si je rentrai des données... et que j'appuie sur entrée) pour que l'affichage du filtre soit effectif...

Une astuce..?

Encore merci...
 
Re : Filtrer les données d'un tableau par liste déroulante ?

Bonjour Sbalteur, bonjour le forum,

Comment puis je pour filtrer les éléments de la colonne C en selectionnant la valeur désirée par la liste déroulante en C5..?
Je comprends pas... Si tu changes le nom en C5 ça se fait tout seul nom... Ou alors tu as désactivé le Calcul Automatique. Dans ce cas, essaie avec :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$5" Then Exit Sub
Target.Calculate
Range("C7").AutoFilter Field:=1, Criteria1:=Target.Value
If Target.Value = "tous" Then Range("C7").AutoFilter Field:=1
End Sub
 
Re : Filtrer les données d'un tableau par liste déroulante ?

Oui si je change le nom ca se change tout seul... 🙁
Dans les options j'ai bien calcul automatique... et même avec 'Target.Calculate' c'est la même chose...

C'est étonnant... j'ai l'impression qu'il faut valider l'action mais comment 🙁

Merci.
 
Re : Filtrer les données d'un tableau par liste déroulante ?

Bonjour Sbalteur, hello Robert,

Des esprits chagrins pourraient dire qu'utiliser le filtre automatique en plus de la liste déroulante ça fait désordre, puisqu'il est aussi simple (et plus complet) de choisir ce que l'on veut filtrer dans le filtre lui-même.

Alors pour leur couper l'herbe sous le pied :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$C$5" Then Exit Sub
With [C7].CurrentRegion
  If Target = "tous" Then .AdvancedFilter xlFilterInPlace, "": Exit Sub
  [E8] = "=C8=C$5"
  .AdvancedFilter xlFilterInPlace, [E7:E8]
  [E8] = ""
End With
End Sub
Fichier joint.

A+
 

Pièces jointes

Re : Filtrer les données d'un tableau par liste déroulante ?

Re,

Je vois que notre ami est sur Excel 2000.

Je ne sais pas pour cette version, mais je sais que sur Excel 97 une liste de validation ne permettait pas de créer l'événement Change...

A+
 
Re : Filtrer les données d'un tableau par liste déroulante ?

Re,

Alors Sbalteur testez ce fichier (2) qui utilise l'événement Calculate :

Code:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
With [C7].CurrentRegion
  If [C5] = "tous" Then
    .AdvancedFilter xlFilterInPlace, ""
  Else
    [E8] = "=C8=C$5"
    .AdvancedFilter xlFilterInPlace, [E7:E8]
    [E8] = ""
  End If
End With
Application.EnableEvents = True
End Sub
Si la macro ne se déclenche pas toute seule, vous pourrez toujours appuyer sur la touche F9.

A+
 

Pièces jointes

Re : Filtrer les données d'un tableau par liste déroulante ?

Un grand merci à tous les 2.

En effet cela fonctionne désormais ! Je me demande bien pourquoi le premier code ne déclenchait pas la macro tout seul...

Mais cela fonctionne avec calculate ! Encore merci.

Cordialement.
 
Re : Filtrer les données d'un tableau par liste déroulante ?

En effet désolé... je n'avais pas fait attention...

Merci beaucoup pour l'ensemble de ces précisions.

Je suis un homme heureux 🙂
 
Re : Filtrer les données d'un tableau par liste déroulante ?

Re,

Une autre solution avec une Zone de liste déroulante (contrôle de Formulaires).

La macro affectée à l'objet :

Code:
Sub Filtrer()
'cellule liée en C5
With [C7].CurrentRegion
  If[Liste].Cells([C5]) = "tous" Then .AdvancedFilter xlFilterInPlace, "": Exit Sub
  [E8] = "=C8=INDEX(Liste,C$5)"
  .AdvancedFilter xlFilterInPlace, [E7:E8]
  [E8] = ""
End With
End Sub
La plage de la liste est nommée Liste, cellule liée en C5.

Fichier (3), voyez si tout se passe bien sur Excel 2000.

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
XL 2016 liste
Réponses
10
Affichages
388
Retour