Activer des filtres via userform comme sur une feuille excel

jojo2006

XLDnaute Occasionnel
Bonjour à tous,

voila je dispose d'une feuille excel avec 10 colonnes (10 critères dans mon fichier) remplies de différentes valeurs. Je souhaiterai controler les filtres via un useform (formulaire) uniquement.

Dans le meilleur des cas, J'aimerai si possible que chaque filtre sur chaque colonne s'affiche avec des checkbox (comme lorsqu'on appuie sur la fleche du filtre dans une feuille excel) afin de cocher et de décocher les valeures à filtrer. ça permet de filtrer sur plusieurs valeur.
Est ce faisable via un formulaire ?

Ou dans le pire des cas avoir un filtre (valeur unique) pour chaque critère .

Une fois tous les filtres sélectionné je voudrai créer un bouton pour valider les valeures à filtrer pour chaque critère.

si vous avez des idées pour aborder le problème je vous en serai reconnaissant
J'espère avoir décrit correctement ce que je souhaite faire. J'ai mis un fichier en pièce jointe.

Bon week end de pâques à tous !!!

Merci d'avance
 

Pièces jointes

  • Classeur1.xlsx
    27.7 KB · Affichages: 110
  • Classeur1.xlsx
    27.7 KB · Affichages: 95
  • Classeur1.xlsx
    27.7 KB · Affichages: 115

job75

XLDnaute Barbatruc
Re : Activer des filtres via userform comme sur une feuille excel

Bonjour jojo2006,

Microsoft nous met à disposition 2 types de filtres, et c'est pour qu'ils servent à quelque chose.

Maintenant il y a une multitude de manières pour fabriquer des usines à gaz.

A+
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Activer des filtres via userform comme sur une feuille excel

Bonjour Jojo,

ton fichier en retour

à+
Philippe

Edit: Salut Job, je te laisse découvrir mon usine à gaz
 

Pièces jointes

  • 111.xlsm
    45.5 KB · Affichages: 281
  • 111.xlsm
    45.5 KB · Affichages: 247
  • 111.xlsm
    45.5 KB · Affichages: 303

raskok

XLDnaute Junior
Re : Activer des filtres via userform comme sur une feuille excel

Salut,
J'ai trouvé le fichier 111.xls , super géniale, je voudrais pouvoir récuperer le même style de code dans mon fichier.
Pourrait tu m'expliquer la différence entre la feuil "DATA" et la feuil 3 , as tu créer ou valider une liste pour chaque colonnes?
Je pense que tu as compris ma demande lol...
Comment sa fonctionne en gros ...
Merci d'avance de ta réponse , cela m'aiderai beaucoup.
au plaisir de te lire
à plus.
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Activer des filtres via userform comme sur une feuille excel

Bonjour raskok
Salut,
J'ai trouvé le fichier 111.xls , super géniale, je voudrais pouvoir récuperer le même style de code dans mon fichier.
Pourrait tu m'expliquer la différence entre la feuil "DATA" et la feuil 3 , as tu créer ou valider une liste pour chaque colonnes?
Je pense que tu as compris ma demande lol...
Comment sa fonctionne en gros ...
Merci d'avance de ta réponse , cela m'aiderai beaucoup.
au plaisir de te lire
à plus.
Concernant la feuille 3, elle contient les mêmes données que la feuille "DATA" sans doublons

C'est le contenu de cette feuille 3 qui alimente les combobox présents sur l'USF

as tu créer ou valider une liste pour chaque colonnes?
Presser Ctrl+F3 pour voir les listes



à+
Philippe
 

jojo2006

XLDnaute Occasionnel
Re : Activer des filtres via userform comme sur une feuille excel

Bonjour phlaurent55 et aux autres du forum.


merci pour ton fichier en retour ( c'est simple et efficace). Merci aussi à BOISGONTIER

Ceci dit j'ai bien cogité et j'aimerai aborder le problème différement.

En fait j'utilise un formulaire qui (en fonction de l'onglet cliqué sur le userform) renvoie des données (via des combobox en majorité) stockées dans des feuilles du classeur ( qui portent le même nom que les onglets).

La navigation se fera via le spin button ( non fonctionnel à ce jour).

Du coup si j'utilise ton code ça me fait recréer d'autre combobox et je n'ai pas trop envi de surcharger le userform actuel ( déja plein :eek: ).

Ainsi je souhaiterai mettre un petit bouton filtre à coté de chaque combobox qui fonctionnerai ainsi:


Appui sur bouton Filtre1 => alimente la combobox1 avec les valeurs contenues dans la colonne correspondante ( sans doublon et si possible trié par ordre alphabétique).
Apparait alors dans la combobox (en 1ère valeur par défaut, "Choisir Filtre")
puis lorsque je choisie la valeur à filtrer, le filtre se réalise dans la feuille excel.

Idem pour les autres combobox avec leur filtre associés.

Si je rappuie sur le bouton filtre ( déja actif) alors le filtre se désactive sur la colonne associé.


Je joins un fichier de mon projet

En fait j'aimerai que le userform soit intuitif pour l'utilisateur pour activer et désactiver des filtres et naviguer ensuite sur les produits correspondants aux critères de recherche.


Si vous avez des idées n'hésitez pas.

Merci à vous
 

Pièces jointes

  • PROJET_V5.xlsm
    798 KB · Affichages: 268
Dernière édition:

raskok

XLDnaute Junior
Re : Activer des filtres via userform comme sur une feuille excel

salut philippe
une dernière précision stp
Tu as crée des listes sur la feuille 3 et ensuite tu l'as associé a un combobox dans le code directement?
as tu fait une liste aussi sur data (ou doit on faire quelques choses?)
j'ai vu dans le code "criteria" cela veux dire quoi
Merci pour ses dernières précisions
@plus
 

jojo2006

XLDnaute Occasionnel
Re : Activer des filtres via userform comme sur une feuille excel

Bonjour Raskok je pense pouvoir répondre sur "criteria"


Criteria signifie sur quel critère tu souhaites filtrer la colonne:

Par exemple:

ActiveSheet.Range("$A$1:$J$430").AutoFilter Field:=1, Criteria1:=ComboBox1.Value


Criteria1:=ComboBox1.Value veut dire qu'on va filtrer la colonne N°1 sur la valeur (value) de la combobox nommée combobox1
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : Activer des filtres via userform comme sur une feuille excel

Bonjour le Fil, le Forum

Sur ce coup là je te rejoins Job75, car pour moi la VRAIE VALEUR AJOUTEE (car je n'en ai pas trouvé tellement d'autres) à Excel 2007 et 2010 ce sont justement les AutoFilters qui sont devenus vraiment puissants, ergonomiques et vraiment UserFriendly... Et ultra rapides même sur une feuille de 600K lignes et plus...

Si encore tu étais sous 2003, je me dirais OK, mais tu précises être sous 2010

Maintenant refaire le monde en VBA? c'est tout à fait louable mais juste pour l'exercice :)

Bon courage

Bien à vous
@+Thierry
 

jojo2006

XLDnaute Occasionnel
Re : Activer des filtres via userform comme sur une feuille excel

Bonjour à tous,

En fait je construit un formulaire ( qui est pour moi bcp plus conviviale/lisible pour naviguer dans un fichier avec plusieurs colonne et consulter des articles par exemple)

Je suis d'accord avec vous que les filtres sont puissants mais l'utilisateur ne verra justement QUE le userform donc c'est pour cela que je cherche un moyen de pouvoir filtrer via l'interface.

Merci à vous
 

raskok

XLDnaute Junior
Re : Activer des filtres via userform comme sur une feuille excel

Bonjour à toute la communauté
J'ai essayé de comprendre le code de formcascadeorde si dessous que je trouve excellente.
Cependant j'arrive à ajouter 10 combobox donc jusqu'a la colonne "J" , pour le K cela ne fonctionne pas
Si quelqu'un pouvait m'expliquer , je rame depuis des jours dessus.
je vous mes mon code qui marche jusqu'à J
Si quelqu'un peux m'éclairer car j'ai plus de cheveux :p.

Dim f, bd

Private Sub ListBox1_Click()

End Sub

Private Sub UserForm_Initialize()
Set f = Sheets("bd")
Set bd = f.Range("a2:J" & f.[A65000].End(xlUp).Row)
For c = 1 To 6
ListeCol c
Next c
filtre
For i = 1 To 6: Me("label" & i) = f.Cells(1, i): Next i
End Sub
Private Sub ComboBox1_DropButtonClick()
ListeCol 1
End Sub
Private Sub ComboBox2_DropButtonClick()
ListeCol 2
End Sub
Private Sub ComboBox3_DropButtonClick()
ListeCol 3
End Sub
Private Sub ComboBox4_DropButtonClick()
ListeCol 4
End Sub
Private Sub ComboBox5_DropButtonClick()
ListeCol 5
End Sub
Private Sub ComboBox6_DropButtonClick()
ListeCol 6
End Sub
Private Sub ComboBox7_DropButtonClick()
ListeCol 7
End Sub
Private Sub ComboBox8_DropButtonClick()
ListeCol 8
End Sub
Private Sub ComboBox9_DropButtonClick()
ListeCol 9
End Sub
Private Sub ComboBox10_DropButtonClick()
ListeCol 10
End Sub
Private Sub ComboBox11_DropButtonClick()
ListeCol 11
End Sub

Sub ListeCol(noCol)
Set MonDico = CreateObject("Scripting.Dictionary")
For i = 1 To bd.Rows.Count
ok = True
For n = 1 To bd.Columns.Count
If n <> noCol Then
If Not bd.Cells(i, n) Like Me("comboBox" & n) Then ok = False
End If
Next n
If ok Then
tmp = bd.Cells(i, noCol)
MonDico(tmp) = tmp
End If
Next i
MonDico.Add "*", "*"
temp = MonDico.items
Call Tri(temp, LBound(temp), UBound(temp))
Me("ComboBox" & noCol).List = temp
End Sub
Sub Tri(a, gauc, droi) ' Quick sort
ref = CStr(a((gauc + droi) \ 2))
g = gauc: d = droi
Do
Do While CStr(a(g)) < ref: g = g + 1: Loop
Do While ref < CStr(a(d)): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri(a, g, droi)
If gauc < d Then Call Tri(a, gauc, d)
End Sub
Private Sub ComboBox1_Change()
filtre
End Sub
Private Sub ComboBox2_Change()
filtre
End Sub
Private Sub ComboBox3_Change()
filtre
End Sub
Private Sub ComboBox4_Change()
filtre
End Sub
Private Sub ComboBox5_Change()
filtre
End Sub
Private Sub ComboBox6_Change()
filtre
End Sub
Private Sub ComboBox7_Change()
filtre
End Sub
Private Sub ComboBox8_Change()
filtre
End Sub
Private Sub ComboBox9_Change()
filtre
End Sub
Private Sub ComboBox10_Change()
filtre
End Sub
Private Sub ComboBox11_Change()
filtre
End Sub

Sub filtre()
ligne = 0
Me.ListBox1.Clear
For i = 1 To bd.Rows.Count
ok = True
For n = 1 To bd.Columns.Count
If Not bd.Cells(i, n) Like Me("comboBox" & n) Then ok = False
Next n
If ok Then
Me.ListBox1.AddItem
For k = 1 To bd.Columns.Count
Me.ListBox1.List(ligne, k - 1) = bd.Cells(i, k)
Next k
Me.ListBox1.List(ligne, 6) = bd.Cells(i, k)
ligne = ligne + 1
End If
Next i
End Sub
Private Sub CommandButton1_Click()
Sheets("result").[A2:F1000].Clear
Sheets("result").[A2].Resize(Me.ListBox1.ListCount, 6) = Me.ListBox1.List
End Sub
 

raskok

XLDnaute Junior
Re : Activer des filtres via userform comme sur une feuille excel

Salut à toute la communauté ,
BOISGONTIER je reviens vers toi pour des précisions stp
Voila j'aimerai faire apparaitre le nom des colonnes dans le filtre en haut d'une part (j'ai reçu à faire apparaître que des carré vide).
d'autre part je voudrais ajouter un compteur en haut qui donnerai en instantané le nombre de lignes sélectionné suite au filtre efféctué.
Dernier point, je reste bloqué à la colonne "N" pour les filtres
J'espère que tu pourras m'aider à fignoler mon projet.
Merci encore pour ton aide
j'apprends beaucoup grace à ton aide
:)
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 145
Membres
103 130
dernier inscrit
FRCRUNGR