filtrage élaboré et checkbox, en VBA et avec Userform

RomainDumoulin

XLDnaute Nouveau
Bonsoir à tous !

Voila trois semaines intensives que je forme au VBA en partie grace au forum, et maintenant, j en suis rendu a être un peu bloqué.

Je realise une interface pour une base donnees de mesures.
J ai fait 2 USF differents avec des filtres automatiques et des critères provenant de combobox. jusqu ici, merci au forum, j ai trouvé mon bonheur...

Je bloque sur la mise en place de filtres avec des checkbox ( voir dans l USERFORM2 ) pour gerer le filtre de "type de materiaux" et "type de fenêtre"

Les filtres vont avoir plus de deux critéres (plusieurs checkbox décochés) et donc si j ai bien compris ca implique un filtre elaboré.

Je trouve peu d idées et d exemple sur comment lier les checkbox et les critères dédiés aux filtres elaborés..

La solution qui est de creer une colonne par type (au lieu d une seule colonne "type") puis de filtrer "automatique" ne me satisfait car ca rend l entrée de nouvelles données trop complexe.

Merci d'avance pour votre aide !

Romain

PS: je travaille sur Excel 2000 version Américaine
 

Pièces jointes

  • filter-checkbox.zip
    42.2 KB · Affichages: 610

Excel-lent

XLDnaute Barbatruc
Re : filtrage élaboré et checkbox, en VBA et avec Userform

Bonjour et bienvenu sur le forum Romain,

RomainDumoulin à dit:
Les filtres vont avoir plus de deux critéres (plusieurs checkbox décochés) et donc si j ai bien compris ca implique un filtre elaboré.

Pas forcément. Tu peux aussi le faire dans ton code, du style :

Code:
If CheckBox9 = True Then
   For i = 2 To DernièreLigneBD
         If Cells(i, 10) = "DoubleVitrage" Then ComboBoxListe1.AddItem Cells(i,10)
   Next i

If CheckBox9 = False Then
   For i = 2 To DernièreLigneBD
         If Cells(i, 10) = "SimpleVitrage" Then ComboBoxListe1.AddItem Cells(i,10)
   Next i

...

A adapter à ton projet.

Regarde ce sujet, cela devrait t'aider ;)

Bonne après midi
 

RomainDumoulin

XLDnaute Nouveau
Re : filtrage élaboré et checkbox, en VBA et avec Userform

Salut le forum ! Salut Excel-lent ! merci pour ton aide !
j aurai besoin de plus d'explication pour mettre en application ton conseil, je t avoue que je suis un peu perdu...

Ce que j ai compris : Le code que tu me propose permet d'inserer les differents cas en fonction d une checkbox (cochée ou pas) dans une combobox :

dans mon exemple, je me retrouve avec une combobox contenant differents types de fenetres sauf ceux pour qui la checkbox est decochée, et donc plus de deux types de fenetres...

Maintenant, mon problème est que pour filtrer avec un filtre automatique, je dois choisir une valeur de la combobox et je ne crois pas que je peux choisir toutes les valeurs de la liste ? Je me trompe ?
Merci d avance!
A plus !
 

Excel-lent

XLDnaute Barbatruc
Re : filtrage élaboré et checkbox, en VBA et avec Userform

Bonsoir RomainDumoulin, le fil,


Voici ci-joint ton fichier modifié.

Ton problème de l'USERFORM3 et le même que celui de l'USERFORM2. Je me suis donc concentré à t'expliquer l'USERFORM2 pour que tu puisse le comprendre et l'appliquer sur l'USERFORM3 (la plus facile).

Je me suis permis de supprimer de ton fichier :
-> supprimer l'USERFORM3 (non utile à mon explication)
-> simplifier l'USERFORM1

Pour ton USERFORM2, j'ai :
-> modifier le nom de tes "checkbox" 7 et 4 pour pouvoir simplifier le code en utilisant une boucle.
-> scindé en deux ta "Frame1" pour un look plus sympa
-> placé ta CheckBox10 : "Fenêtre" au dessus de ta CheckBox9 "Vitrage". Car je trouvais plus sympa de partir de la généralité : la Fenêtre, pour aller vers le détail : "Vitrage" puis "composition de la première vitre"

Concernant le code de ta USERFORM2, j'ai :
-> placé en premier ta macro : "UserForm_Initialize()" pour plus de clarté. C'est la macro qu'Excel exécute en premier, lorsque ton USERFORM2 apparaît à l'écran, il est donc normal de la mettre en premier.
-> modifié ta macro "CheckBox10_Click()"
-> j'ai rajouté la macro "CheckBox9_Click()"
-> corrigé ta macro : "CommandButton2_Click()" => bouton Refresh
-> supprimé ta macro : "UserForm_Terminate()" => qui après modification du code des autres macros est devenu inutile.

Il reste à faire :
-> corriger ta macro : CommandButton1_Click() => bouton "Afficher les résultats"
-> corriger tes macros : ComboBox1_Change() et ComboBox2_Change()

Avant j'aurais quelques questions à te poser pour mieux comprendre tes besoins :
-> tu dis commencer par la première vitre, mais j'en vois qu'une. Non? Les trois ComboBox concernent bien TOUTES la première vitre?
-> Comment vas tu gérer les autres? Demander à l'utilisateur le nombre de vitre qu'il veut, et en fonction mettre le nombre adéquat de ligne de saisie?
-> les données figurants dans la première ComboBox doivent provenir d'où?
--------* D'une liste modifiable que tu va mettre sur ton fichier excel?
--------* D'une liste non modifiable (dans ce cas tu n'es pas obligé de les faire figurer sur ta feuille excel).
--------* Prendre toutes les valeurs de la colonne A en enlevant uniquement les doublons (triplons, ...)
--------* ...

-> les données figurants dans la seconde ComboBox doivent provenir d'où? D'une liste modifiable ou non modifiable? Elle doit contenir les données : "Air thickness"? Toutes les valeurs "1st Glass thickness" peuvent être combiné avec TOUTES les valeurs "Air thickness"?

Tout ce charabia pour te demander : tes listes sont en cascade ou non?

-> c'est quoi les données figurants dans la troisième ComboBox?

Je repasserais dans le coin demain soir.

A te lire.

Cordialement
 

Pièces jointes

  • filter-checkbox proposition.zip
    32.3 KB · Affichages: 794
Dernière édition:

RomainDumoulin

XLDnaute Nouveau
Re : filtrage élaboré et checkbox, en VBA et avec Userform

Excel-Lent : merci pour ton implication !!
Salut le forum !
J ai pas été super clair dans la presentation de mon interface lors de mon premier message:
a partir du fichier que j ai mis en pièce jointe,
les 3 combobox sont en cascades, le principe marche bien que lorsqu on commence par la premiere combobox, les valeurs de la combo2 dependent du choix du combo1, pareil pour la combo3.

Pour repondre a ta question, les donnes de la premiere combobox sont recupérés dans la colonne A, le code existant evite les doublons, il faut qu on puisse rajouter de nouvelles données directement dans la feuille "windows"

En fait, il y a dans ce meme userform 2 de type de filtrage des données que je souhaiterai combiner :
> un filtre en fonction de la composition d une fenetre, il s agit des colonnes A,B,C, ce filtrage se gèrant avec les 3 combobox, epaisseur de la premiere vitre, epaisseur d air, epaisseur de la 2eime vitre.
> un filtre en fonction d autres carateristiques d une fenetre, son materiau, son type de construction, colonnes D,E,F, et ce filtrage se gerant avec des checkbox...

Et avec tout ces filtres qui sont pour l instant automatiques, la programmation du bouton "afficher les resultats" devient trop oscure pour mon experience novice en VBA...



Pour participer un minimum a leffort collectif, malgré que je bloque pas mal, j ai modifié un detail de ton fichier : encore une fois, j ai manque de clarté de mon exemple : les mesures sont soit faites soit sur des vitrages (sans chassis) soit sur des fenetres ( chassis +vitrage) du coup, ta modif entre les CheckBox10 et CheckBox9 n etait pas à faire . Desolé , j espère que tu ne prendras pas ca pour une offense ;)
En pratique, l utilisation

j espére que tout est plus clair maintenant !
Encore merci a toi Excel-Lent pour le temps que tu passes a m aider!

Et au plaisir de profiter de tes conseils avisés...

Romain
 

Pièces jointes

  • filter-checkbox proposition2.zip
    31.3 KB · Affichages: 311

Excel-lent

XLDnaute Barbatruc
Re : filtrage élaboré et checkbox, en VBA et avec Userform

Bonsoir RomainDumoulin,

Donc si j'ai bien compris, l'userform ci-jointe te conviendrais mieux (sauf les couleurs peut-être? :D) ?

Le résultat s'affichera dans l'userform (dans la listBox), t'évitant ainsi d'utiliser les filtres automatique et permettant un affichage plus sympa : plus besoin de ressortir de l'UserForm ;)

Si cela te convient nous pourrons passer à la réalisation du code.

A te lire

Cordialement
 

Pièces jointes

  • filter-checkbox proposition3.zip
    26.9 KB · Affichages: 957

RomainDumoulin

XLDnaute Nouveau
Re : filtrage élaboré et checkbox, en VBA et avec Userform

Bonjour Excel-lent! merci pour ton aide!
l userform que tu proposes est vraiment bien ( bonne cohésion des couleurs :rolleyes: )
Eviter de ressortir de l USerform serait parfait! j ai deux questions :
» je pourrais avoir dans ma base de données plus de 1000 lignes a traiter, est ce que cette méthode reste rapide par rapport aux filtres ?
» est ce qu il est possible dans le code de combiner les deux méthodes de selections ?

Encore merci pour ton aide,
au plaisir de te lire et de passer à la réalisation du code !!

Romain
 

Excel-lent

XLDnaute Barbatruc
Re : filtrage élaboré et checkbox, en VBA et avec Userform

Bonsoir RomainDumoulin,

Ces temps ci je n'arrête pas de courir et n'arrive pas à trouver suffisamment de temps pour finaliser ton fichier.

Donc au lieu de te bloquer inutilement, voici ci-joint le brouillon de ma proposition

Modifications apportées :
-> l'ordre de saisie des comboBox semblait te travailler. Pb résolu ci-joint
-> j'ai commencé l'alimentation de la ListBox

Reste à faire :
-> résoudre le bug dans l'UserForm1, macro : CommandButton3_Click()
-> une fois le bug résolue, faire exactement la même chose pour la macro : CommandButton1_Click()

Bonne continuation et si tu as encore des soucis, je suis sûr que quelqu'un d'autre de moins occupé pourras t'aider.

Bonne soirée
 

RomainDumoulin

XLDnaute Nouveau
Re : filtrage élaboré et checkbox, en VBA et avec Userform

Salut Excel-lent
pour moi c est a peu pres la meme chose : je n'arrête pas de courir et n'arrive pas à trouver suffisamment de temps pour finaliser mon fichier...
Je vais avancer tranquillement.
Merci pour ton aide
A plus
 

Discussions similaires

H
Réponses
19
Affichages
6 K

Statistiques des forums

Discussions
312 488
Messages
2 088 836
Membres
103 972
dernier inscrit
steeter