Filtrage de données

Bonjour à tous,

Voici mon problème :

J'ai une BD avec 4 colonnes (noms d'ouvrages, noms de groupes, la sensibilité et le pays).

Avec une macro (trouvée sur le net http://boisgontierjacques.free.fr/index2.htm) j'arrive a rechercher un item dans ma bd et filtrer mon tableau pour n'afficher que les lignes qui m'intéressent.

Par exemple, si le groupe qui m'intéresse s'appelle XXX, je tape son nom dans la barre de recherche et en cliquant sur Filtrer, j'obtiens le résultat voulu i.e le pays, les ouvrages et les sensibilités associées au groupe XXX.

A présent j'ai envie d'aller un peu plus loin. Je souhaiterais ajouter un filtre supplémentaire sur la sensibilité. C'est a dire :

1) Afficher seulement les ouvrages ayant une sensibilité > n par rapport au groupe XXX. (n étant un nombre que l'utilisateur fixera)

2) créer un bouton qui classerait par ordre de sensibilité croissante

idéalement, faire les taches 1+2 en un seul bouton

Avec l'enregistrement de macro, j'ai essayé de voir à quoi ressemblaient les lignes de codes. Sur un cas simple, ce se fait en une seule ligne mais j'ai du mal à adapter le code à mon cas...

Je mets en pièce jointe une version simplifiée de mon fichier.

Merci d'avance a tous ceux qui prendront le temps de me lire !

8interface.zip (43.85 Ko)

Bonjour

Je t'ai répondu ailleurs où tu as multiposté.

Nul besoin de VBA : utilise le format xlsx et non xls obsolète depuis 12 ans, un tableau structuré et des segments

Tout marchera sans une ligne de code...

Bonsoir,

Avec le filtre élaboré

En D2: =ET(NB.SI(A6:B6;"*"&$A$2&"*")>0;C6>=$B$2)

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect([A2:B2], Target) Is Nothing And Target.Count = 1 Then
    [A5:D50000].AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=[d1:d2], _
      CopyToRange:=[M5:P5], Unique:=False
  End If
End Sub

Boisgontier

5classeur1.xlsm (15.75 Ko)

Bonsoir chris78,

Bonsoir Jacques,

Merci pour vos retours.

@ chris78 : je comprends ta réponse. Avec un filtre pas besoin de code. Mais disons que mon "supérieur hiérarchique" voudrait une interface plus sexy que l'utilisation d'un filtrage manuel.

@Jacques : Merci pour ta réponse. Ca fonctionne très bien.

- Une idée pour les classer ordre décroissant ?

- En ce qui concerne l'interface, auriez vous une idée (un lien ou un tuto) pour la rendre plus attrayante ? Je sais que c'est superficiel mais c'est le boss qui veut ca...

>- Une idée pour les classer ordre décroissant ?

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect([A2:B2], Target) Is Nothing And Target.Count = 1 Then
    [A5:D50000].AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=[d1:d2], _
      CopyToRange:=[M5:P5], Unique:=False
    [M5].CurrentRegion.Sort key1:=[O6], Order1:=xlDescending, Header:=xlYes
   End If
End Sub

>- En ce qui concerne l'interface, auriez vous une idée (un lien ou un tuto) pour la rendre plus attrayante ?

Un formulaire?

Boisgontier

7filtreelab99.xlsm (18.31 Ko)

TOP ! c'est exactement ce que je voulais

En ce qui concerne le formulaire, sauf erreur de ma part, cela permet seulement de remplir un tableau ? non ?

Si oui, est il envisageable de faire l'opération inverse ? cad rentrer le nom d'un groupe/ouvrage, sélectionner un seuil minimal de sensibilité et obtenir en sortie le tableau (ou idéalement un histogramme) dans une autre feuille.

Résultat dans une autre feuille en PJ.

On peut imaginer un (ou 2) combobox(s) intuitifs avec la liste des groupes/lignes qui se réduit au fur et à mesure de la frappe.

Boisgontier

7filtreelab99.xlsm (19.78 Ko)

Bien reçu !

Pour ce qui est des comboboxs, je trouve que c'est une bonne idée. Il me semble avoir déjà vu ca sur ton site. j'y vais de ce pas

Essai avec combobox intuitif

Boisgontier

12filtreelab100.xlsm (31.95 Ko)

AU TOP ! merci Jacques

Rechercher des sujets similaires à "filtrage donnees"