[VBA] Filtres dans un UserForm

tacite56

XLDnaute Nouveau
Bonjour à tous et à toutes !

Avant de commencer, je tiens à préciser que je ne suis "pas très fort" en VBA ...

Pour diverses raisons, je souhaite utiliser des filtres par le biais de checkbox depuis un userform. J'ai essayé d'utiliser l'enregistreur de macro (fonction autofilter), mais il m'est alors impossible de sélectionner deux checkbox pour filtrer avec deux critères. En effet, c'est le dernier critère du code qui est pris en compte ... J'ai bien essayé les filtres élaborés, mais je ne les maitrise pas et je n'ai rien obtenu de probant.

Puisqu'un exemple est toujours préférable à un long discours, je joins ici un petit fichier exemple.

Je me doute que mon problème n'est pas franchement complexe, mais ça fait plusieurs semaines que je bloque dessus, et c'est un petit peu rageant ;)

Merci d'avance pour votre aide,
 

Pièces jointes

  • Classeur_filtre_userform.xls
    48.5 KB · Affichages: 170

tacite56

XLDnaute Nouveau
Re : [VBA] Filtres dans un UserForm

Peut-être n'étais-je pas très clair, je reformule:

Sur le classeur joint ci-dessus, un bouton fait apparaître un UserForm. Sur cet UF, il y a des checkbox qui doivent déclencher ou non des filtres après clic sur un bouton de validation. Le hic c'est que je ne sais pas comment coder ça. J'ai essayé de faire quelque chose de ce genre:
Code:
If CheckboxValeur1 = True Then AutofilterValeur1 'Je sais que AutofilterValeur1 n'est pas correct, c'est un exemple pour montrer le raisonnement
End If
If CheckboxValeur2 = True Then AutofilterValeur2
End If

Comme je le disais dans mon précédent post, si je fais ça, au lieu de filtrer sur Valeur1 et Valeur2, VB va filtrer Valeur1 puis Valeur2, selon l'ordre d'exécution du code. Evidemment, je souhaite avoir la possibilité de combiner plusieurs critères de filtres.

Ce que je voudrais, donc: pouvoir sélectionner plusieurs checkbox afin que les filtres associés à ces checkbox s'activent ensemble, au lieu de s'annuler les uns après les autres.

Voilà, j'espère avoir été assez compréhensible. Puisque ça fait trois fois que je poste à propos de ce problème, en essayant différentes formulations et versions de mon classeur test, il serait vraiment gentil de me dire au moins pourquoi je n'ai jamais une seule réponse. Est-ce trop compliqué ? Inintéressant ? Les gens ne comprennent pas ce que je veux faire ? Peut-être que beaucoup ont ce problème et que les experts en ont assez d'y répondre ? Si c'est le cas, il faut savoir que ça fait trois semaines que j'écume les forums et je n'ai jamais trouvé une solution que je sois capable d'adapter.

Bref, sans animosité aucune mais en espérant sincèrement une réponse;)

Bonne journée au forum !
 

pedrag31

XLDnaute Occasionnel
Re : [VBA] Filtres dans un UserForm

Bonjour Tacite56, Bonjour le forum,


  • Quelle version d'Excel utilises-tu?


Cette question est importante car si tu es sous 2003 et que tu utilises tes filtres automatiques pour la sélection, tu seras forcément limité à 2 critères ou 2 valeurs de cellules si tu préfères. Au delà, il te faudra créer ta propre boucle de tri, où tu parcours ton tableau ligne à ligne et où tu masques les lignes qui ne correspondent pas à tes 3 (ou plus) critères cochés...


  • Est-ce que tes critères seront toujours figés?
  • Exemple, est-ce que dans ta colonne A tu auras toujours et seulement des "Lapin" "Pierre", "Fraise" et "Chat"?


Oui, car si tes valeurs changent, à l'initialisation de l'USF, il te faudra forcément faire évoluer tes checkboxes (nombre et nom) et là, de suite, ce sera bcp plus coton pour ton code (genre analyse des doublons dans la colonne, création de liste des valeurs uniques, création des checkboxes sur l'USF, vérifcation de la mise en page de ton USF en fonction du NB de Checkboxes, ... :rolleyes:).
Toutefois, si tes valeurs par colonne ne changent jamais, alors ça vaut peut être le coup de coder ton filtre avec cet USF...

En attendant tes réponses...

Bonne journée :)
 

pedrag31

XLDnaute Occasionnel
Re : [VBA] Filtres dans un UserForm

Re,

Tiens, je viens d'avoir une idée pour ton USF de tri qui permet de s'adapter aux valeurs de tes colonnes même si elles changent d'une fois sur l'autre... Héhé :cool:
Cliquer sur le btn "Autre Exemple"

Dis moi si ça irait pour ton application, on regardera le code de tri ensuite...

Bonne journée :)
 

Pièces jointes

  • FiltreElaboreUserform.xls
    54 KB · Affichages: 340

tacite56

XLDnaute Nouveau
Re : [VBA] Filtres dans un UserForm

Ahhh ! Mille mercis Pedrag pour ton aide !

Je suis à la pointe du progrès - Excel 2010 :). Ton exemple me va tout à fait. C'est vrai que l'ajout de nouveaux critères de recherche me paraissait coton, mais pour moi c'était un détail puisque normalement ils ne bougeront pas trop. Ton exemple me semble parfait, surtout s'il est facile de rajouter des critères ! Et +1 pour la petite blague msgBox ;)
 

pedrag31

XLDnaute Occasionnel
Re : [VBA] Filtres dans un UserForm

Re,

Bon bon, l'Excel 2010 facilite la vie... La version finale ci jointe qui marche nickel chez moi.
J'ai fait la macro de tri sous Excel 2007 alors on se sait jamais, tu pourrais quand même avoir des bugs sous 2010...:p

Dis moi quoi... En espérant t'avoir démêlé la pelote pour la suite de ton code...

Bonne journée :)
 

Pièces jointes

  • FiltreElaboreUserform.xlsm
    28.7 KB · Affichages: 248
  • FiltreElaboreUserform.xlsm
    28.7 KB · Affichages: 225
  • FiltreElaboreUserform.xlsm
    28.7 KB · Affichages: 271

tacite56

XLDnaute Nouveau
Re : [VBA] Filtres dans un UserForm

paaaarrrfait !! Ca marche ! il ne me reste plus qu'à adapter ça à mon classeur (parce que tu devais t'en douter, ce n'est pas mon vrai classeur) mais je devrais y arriver sans trop de problèmes.

Je peux te mettre sur la suite du problème ?

Si t'es dispo, j'ai une nouvelle colonne avec des nombres. J'aimerai les filtrer eux aussi, en choisissant l'opérateur de comparaison (plus grand, plus grand ou égal, plus petit, plus petit ou égal, égal) peut-être dans une combobox, puis en entrant un nombre dans une zone de texte. De manière à ce que je puisse choisir, par exemple : tous les champs de moins de 120, tout en appliquant également le reste des filtres. Je te joins le classeur test mis à jour pour que tu comprenne !



Et vraiment merci, ça fait plaisir ! Excel est souvent frustrant mais quand ça marche, quel bonheur !
 

Pièces jointes

  • FiltreElaboreUserform.xlsm
    33.4 KB · Affichages: 251
  • FiltreElaboreUserform.xlsm
    33.4 KB · Affichages: 254
  • FiltreElaboreUserform.xlsm
    33.4 KB · Affichages: 297

pedrag31

XLDnaute Occasionnel
Re : [VBA] Filtres dans un UserForm

Re,

Ravi de voir que ça fonctionne comme tu veux! ;)

Je peux te mettre sur la suite du problème ?

Dans un premier temps, il vaut mieux que tu avances tout seul de ton coté, avec l'aide "F1" sous VBA, l'enregistreur de macros et quelques recherches sur le forum.
Tu sais, XLD n'est pas un forum de prestataires VBA où tu postes un problème et où les bénévoles te codent ensuite la solution... Si tu as besoin d'aide, tu trouveras toujours quelqu'un pour t'aider, te conseiller, t'aiguiller vers les solutions, te décoincer, et débugger un bout de code.

Il faut qu'on sente ton implication et tes efforts dans ton apprentissage de VBA. Je t'ai défriché le début du problème car ce n'était pas évident comme problématique :)rolleyes:) et maintenant tu devrais pouvoir avancer tout seul, je pense, pour ce tri sur des nombres.

N'hésites pas à poster un nouveau post si tu as des problèmes sur la suite du code, il y a du monde pour te répondre.

Bon courage ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz