Filtre sans doublons : cbx et listbox

keepcool183

XLDnaute Occasionnel
bonjour à tous,

un deuxième message aprés celui d'hier où j'avais solicité votre aide.

DOnc la j'ai réussi à créer un filtre de la listbox grâce aux combobox, Grace à un fichier présent sur le forum, le probleme c'est que seul la première ligne s'affiche.

J'ai essayé de créer une boucle mais j'avoue que comme je debute, ça n'a pas trop marché.

Ci joint un bout du fichier.

Le but de ce fichier est de permettre un ajout automatique aprés filtre dans le devis.

Merci
 

Pièces jointes

  • SAMPLE DEVIS 212.zip
    48.3 KB · Affichages: 178

jeanpierre

Nous a quitté
Repose en paix
Re : Filtre sans doublons : cbx et listbox

Bonjour keepcool183, le forum,

Dans ta liste déroulante, tu fais appel à la source "atcnom", or celle-ci est vide en A162:A199.

Remplis cette liste des noms que tu veux faire apparaître et tout rentre dans l'ordre. Il n'est pas besoin de boucle.

Bonne journée.

Jean-Pierre
 

keepcool183

XLDnaute Occasionnel
Re : Filtre sans doublons : cbx et listbox

bonjour Jean-pierre, le fil,
Merci de t'être pencher sur mon problème.

En fait le problème ne vient pas de cette liste déroulante la. (j'ai du enlever plusieurs données pour pouvoir poster un fichier léger).

la listbox qui me gêne se trouve dans un userform (clic sur saisie produit).

Le probleme est que le systeme de Filtre ne marche que pour la première ligne, c'est à dire que :
Si j'ai plusieurs lignes qui correspondent aux critères, Une seule s'affichera dans la Listbox.

Je cherche à afficher toutes les lignes correspondant aux critères des combobox.

Merci ;)
 

skoobi

XLDnaute Barbatruc
Re : Filtre sans doublons : cbx et listbox

Bonjour keepcool183, jeanpierre :),

Je suppose que tu veux filtrer l'affichage au fur et à mesure des sélections dans les combobox.
Dans ce cas, le code se trouvant dans le module de classe va poser problème car en choisissant le 2eme critère, cela va annuler le choix du premier.
Je te suggère d'utiliser le principe du filtre automatique que tu as mis en place pour créer la listbox.
Bref, il faut revoir tout le code...
 

keepcool183

XLDnaute Occasionnel
Re : Filtre sans doublons : cbx et listbox

Bonsoir skoobi, Jean pierre

Effectivement je voudrais que la list se filtre grâce aux combobox.

Je n'est pas bien saisis ta remarque, je ne demande pas une réalisation à ma place juste des pistes.

Où modifier le code?

Merci ;)
 

skoobi

XLDnaute Barbatruc
Re : Filtre sans doublons : cbx et listbox

Re,

Où modifier le code?
Supprime le module de classe et cré le code suivant pour le combobox "critère 4":

Code:
Private Sub cbx1_Change()
Dim Elmnt As Range, Col As Integer
ListBox1.Clear
[C1].AutoFilter Field:=3, Criteria1:=cbx1.Value
For Each Elmnt In Range("C2", [C65536].End(xlUp)).SpecialCells(xlCellTypeVisible)
  ListBox1.AddItem Range("A" & Elmnt.Row).Value
  For Col = 1 To 13
    ListBox1.List(ListBox1.ListCount - 1, Col) = Cells(Elmnt.Row, Col + 1).Value
  Next
Next
End Sub
Ca devrait t'aider pour les codes des autres comboboxs.

Plus le code "Initialise" modifié:

Code:
Private Sub UserForm_Initialize()
ActiveSheet.ShowAllData
t = Range("a2:n" & Range("a65536").End(xlUp).Row): ListBox1.List = t
t1 = Range("C2:c" & Range("c65536").End(xlUp).Row): cbx1.List = t1
t2 = Range("L2:l" & Range("l65536").End(xlUp).Row): cbx2.List = t2
t3 = Range("m2:m" & Range("m65536").End(xlUp).Row): cbx3.List = t3
t4 = Range("n2:n" & Range("n65536").End(xlUp).Row): cbx4.List = t4
 
 End Sub
 
Dernière édition:

keepcool183

XLDnaute Occasionnel
Re : Filtre sans doublons : cbx et listbox

Bonjour Skoobi, le fil

Franchement Skoobi merci j'ai adapté ton code modifié les valeurs des cbx et tout marche bien.

j'ai aussi mis une MAcro pour réinitialiser les filtres, j'ai juste un dernier point à ajuster : est il possible de faire en sorte que dans les cbx je n'est pas de doublon.

j'ai récupérer un code que JP m'a donné sur un autre fil
Code:
With ComboBox1
     If .ListCount > 0 Then .Value = Range("l" & j)
    .Value = Range("l" & j)
    '...et filtre les doublons
    If .ListIndex = -1 And Range("l" & j) <> "" Then .AddItem Range("l" & j)
End With

Le problème c'est que quand je le met dans le code des cbx que tu a réalisé ça ne marche pas.

Merci encore :)
 

skoobi

XLDnaute Barbatruc
Re : Filtre sans doublons : cbx et listbox

Re bonjour,

voici un exemple de code qui cré une liste sans doublon dans un combobox:

Code:
Private Sub UserForm_Initialize()
  Dim MonDico As Object, Cellule As Range
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each Cellule In Range(Range("a3"), Range("a65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
    If Not MonDico.Exists(Cellule.Value) Then MonDico.Add Cellule.Value, Cellule.Value
  Next Cellule
  ComboBox1.List = MonDico.Items
  MonDico.RemoveAll
End Sub

Bon après-midi
 

Discussions similaires

Statistiques des forums

Discussions
312 602
Messages
2 090 156
Membres
104 413
dernier inscrit
HMF1984