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

Sbalteur

XLDnaute Nouveau
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

  • tri.xls
    24 KB · Affichages: 51
  • tri.xls
    24 KB · Affichages: 57
  • tri.xls
    24 KB · Affichages: 66
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
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

  • Sbalteur_v01.xls
    46 KB · Affichages: 57

Sbalteur

XLDnaute Nouveau
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...
 

Robert

XLDnaute Barbatruc
Repose en paix
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
 

Sbalteur

XLDnaute Nouveau
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.
 

job75

XLDnaute Barbatruc
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

  • Sbalteur(1).xls
    48.5 KB · Affichages: 42

job75

XLDnaute Barbatruc
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+
 

job75

XLDnaute Barbatruc
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

  • Sbalteur(2).xls
    49.5 KB · Affichages: 45

Sbalteur

XLDnaute Nouveau
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.
 

job75

XLDnaute Barbatruc
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

  • Sbalteur(3).xls
    49.5 KB · Affichages: 59

Discussions similaires

Statistiques des forums

Discussions
312 069
Messages
2 085 037
Membres
102 762
dernier inscrit
Ucef