Filtrer un LISTVIEW selon lecritere d'un ComboBox

bonjour.

mon classeur ci-joint est doté de 3 modules:

1. AlinemterCombo qui me permet d'alimenter ma combobox sans les doublons de la colonne D. Ceci est nickel.

2. RemplirListview me permet de remplir ma LISTVIEW. Ceci est impecable aussi.

3. ListviewCriteres me permet de n'afficher dans ma LISTVIEW que les enregistrements repondant au critere qui se trouve dans mon comboBox. Et c'est ca qui ne marche pas.

En effet, que je choisisse le critere: Marié(e) ou le critere: Célibataire le filtrage se fait sur le 2eme critere.

Apparemment cela vient du parametre sf

NB: c'est un code repris sur le net et modifié selon mes besoins.

Merci pour votre aide.

51listview.xlsm (59.75 Ko)

Bonjour Zakou76,

Dans le CommandButton1_Click() en dernière ligne

Faire ListviewCriteres(sitfam)

Puisque sitfam est la récupération du ComboBox1.Value

Ensuite changer dans le ListviewCriteres(sf as string)

.........
For Each c in f.range("D2:D" & Derligne) ' à la place  de "A2....
if c.value = sf then                     à la place de If Cstr(c.offset....'
......

Bons tests, bonne continuation.

A nouveau,

Et aussi de changer toujours pour être raccod avec l'en-tête en ListviewCriteres(sf as String)

.ListItems.add , , c.Offset(,-3)

For i = -2 to 8
.Listems(ligne).ListsubItems.Add , , c.Offset(, i)
Next i

Bonjour X Cellus

Merci pour votre aide. C'est exactement ce que je voulais.

Je voudrais aussi savoir comment exraire par rapport a un 2eme critere, par exemple extraire par SITFAM et par tranche d'age ou de salaire.

Merci.

A nouveau,

Pour rajouter un 2 ième critère il faut sur le frame placer un deuxième Combobox par exemple permettant le critère salaire.

De 15000 à 29000, de 30000 à 39000, etc...

Et comme pour sitfam qui se récupère par Me.Combobox1.value par clic sur le bouton1. Rajoutez

remun1 = Cint(left(Me.Combobox2.value, 5))

remun2 = Cint(right(Me.Combobox2.value, 5))

Ceci afin d'avoir la borne basse et haute de la rémunération ou se trouve le salaire des employé(e)s.

Le ListviewCriteres va passer en 3 critères.

Donc la dernière ligne sera ListviewCriteres (sitfam, remun1, remun2)

Ensuite il faudra modifier le Sub ListviewCritere (sf as string, sal1 as integer, sal2 as integer)

Puis changer la ligne if c.value = sf then par if c.value = sf and (c.offset(,7).value >= sal1 and c.offset(,7).value <=sal2)

Ceci compte tenu que les salaires sont en en colonne K donc sept colonnes après la colonne D

Pour l'age ce sera différent car tu as une date de naissance dans ta base. Donc un calcul a effectuer pour connaître l'age

avant de pouvoir chercher dans une tranche d'age. Fais d'abord le salaire et essaie ensuite pour l'age. Si besoin reviens sur ce sujet. Il est toujours possible de garder le ComboBox2 pour traiter aussi bien le salaire que l'age. Avec une adaptation.

Bonne continuation.

Thanks X Cellus . Je vais essayer

A+ et merci

Bonsoir Zakou76,

Je te laisse la dernière version de ton fichier avec le double critères. Par contre j'ai du modifier certains points par rapport à ce que j'ai initialement proposé pour les salaires dans le récent message. Notamment remplacer Cint par Cdbl qui convient mieux.

Et aussi grouper dans sf les critères pour les dégrouper ensuite lors de la restitution.

C'est une solution, mais tu as pu avancer autrement...

A suivre...

41listviewbis.xlsm (37.63 Ko)

Bonjour X Cellus

Merci pour votre reponse. J'ai suivi tes recommandations en ajoutant un 2eme critere. Mai moi j'ai choisi des boutons d'option pour chercher les tranches de salaire.

Le problemeest que j'ai un message "erreur compilation Attendu:=" lors de l'appel de ListviewCriteres (Sitfam ,Remun1,Remun2)

dans le commandButton1. Je ne vois pas ou est l'erreur. Sinon le traitement de listviewBis est bon.

Une derniere question, je n'arrive pas a comprendre le sens de la variable "sf" et ce qu'elle represente.

Merci

err compil

Rebonjour.

Et m'inspirant de votre dernier LISTVIEWBIS j'ai pu ameliorer le code. J'ai seulement modifié l'appel de listviewcriteres et j'ai supprimé le Cint.

Mais je n'ai toujours pas compris la signification de "sf".

Sinon LISTVIEWBIS est nickel.

Merci encore une fois.

Bonjour Zakou76,

Je viens de télécharger ton récent fichier multicritères.

Pour sf: Celui qui a mis en place la macro Listviewcriteres a opté pour les initiales de situation familiale. De ce côté tu as sf comme string c'est à dire texte. C'est ici la valeur de réception qui va servir à rechercher dans la base. Au départ, célibataire ou marié(e).

En effet la valeur d'envoi qui elle aussi est string (le type doit correspondre) se trouve dans le code du Bouton de commande. Elle s'appelle sitfam. L'important est que le type soit le même entre les deux valeurs. Leur nom peut être différent.

A suivre...

A nouveau,

Ci-dessous version 3 du fichier toujours en double critères mais prenant en compte aussi bien soit les salaires, soit l'age.

Simplement en cochant ou décochant un checkBox.

Bons tests, bonne continuation.

55listviewter.xlsm (40.45 Ko)

Bonjour X Cellus.

On ne peut pas etre plus clair que ca.

Merci.

Rechercher des sujets similaires à "filtrer listview lecritere combobox"