Alimentation d'une listBox, selon criteres dans Combobox
Bonjour à tous !
Actuellement dans mon fichier, j'ai un userForm1 avec des combo box.
Mon Userform2, contient une listbox1
J'aimerai alimenter cette listBox, selon les critères choisis dans les combobox de l'userFrom1 ?
J'arrive à l'alimenter via cette formule =>
ListBox1.RowSource = Sheets("Dls_actives").Range("B2:L4000").Value
Mais il n'y a actuellement pas de prise en compte des "filtres" correspondant aux combobox
Je ne sais pas comment écrire la formule
Auriez vous une piste?
je vo
us remercie par avance !
Cdlt
Bonjour Manoss76
Comme vous avez à priori la possibilité de 7 critères différents
la seule possibilité pour la ListBox est de l'alimenter avec une boucle sur toutes les lignes en testant les 7 critères possibles
Pour l'alimentation d'une Listbox par boucle vous avez des tas de sujets sur ce forum
A+
Merci pour la réponse
Je dois faire ce genre de boucle , pour chaque critère de filtre c'est ca? =>
For I = 2 To 50000
If ComboBox2.Value = "CANTELEU" Then ListBox1.Range("A" & I).Value = ComboBox2.Caption
End If
Bonjour
Dans "Dls active" il n'y a pas de proposition. Est ce dans cette feuille qu'il faut faire des recherches?
Si oui EPCI souhaité c'est dans la colonne H?
A+ François
Bonjour,
C'est de ma faute, c'est un fichier de test et je n'ai pas mis la colonne EPCI ds ma feuille... oubli de ma part...
Si on part sur les autres filtres possible , les données sont effectivement issues de la feuille 'Dls_actives"
Par exemple, si je sélectionne "LE HAVRE", dans ma combobox2, de mon userform1
Je souhaite remonter toutes les lignes de la feuille DLs_Active, avec la commune Le Havre ( colonne H)
(avec si possible la possibilité de prendre en compte plusieurs filtres, issue de mon userForm1)
A titre d'info, ce sujet reponds à mon besoin =>
Notemment cette reponse =>
https://forum.excel-pratique.com/d/download?p=961228&f=56402_6064663d233de879042143
Mais je ne comprend pas le code pour l'adapter....
Cdlt
Ton besoin je le comprends mais en VBA si je dis recherche "LE HAVRE" dans la colonne H et que après tu ajoutes une colonne il faut tout reprogrammer....
Tu as aussi un textbox pour le nom et pas de colonne nom, etc....
Je veux bien t'aider mais pas en 20 fois...
dis quelle colonne correspond à quelle combobox
A+ François
Alors dans ma listBox 1 =>
Colonne A = colonne B de la feuille Dls_Active
Colonne B= colonne C de la feuille Dls_Active
Coonne C= colonne D de la feuille Dls_Active
Colonne D = colonne E de la feuille Dls_Active
Colonne E = colonne F de la feuille Dls_Active
Colonne F = colonne G de la feuille Dls_Active
Colonne G = colonne H de la feuille Dls_Active
Colonne H = colonne I de la feuille Dls_Active
Colonne I = colonne J de la feuille Dls_Active
Colonne J = colonne K de la feuille Dls_Active
Colonne K = colonne L de la feuille Dls_Active
(Ma liste à 11 colonnes)
Les résultats doivent dépendre des sélections de mes combobox en UserForm 1
EPCI = à rechercher ds colonne N feuille 'Dls_active'
Quartil = à rechercher ds colonne N feuille 'Dls_active'
Type bien = à rechercher ds colonne N feuille 'Dls_active'
Commune = à rechercher ds colonne N feuille 'Dls_active'
Nature = à rechercher ds colonne N feuille 'Dls_active'
Compo familiale = à rechercher ds colonne N feuille 'Dls_active'
J'ai remis un nouveau fichier, avec la valeur EPCi en colonne N
Dsl erreur de saisie =
Les résultats doivent dépendre des sélections de mes combobox en UserForm 1
EPCI = à rechercher ds colonne N feuille 'Dls_active'
Quartil = à rechercher ds colonne K feuille 'Dls_active'
Type bien = à rechercher ds colonne P feuille 'Dls_active'
Commune = à rechercher ds colonne H feuille 'Dls_active'
Nature = à rechercher ds colonne Q feuille 'Dls_active'
Compo familiale = à rechercher ds colonne R feuille 'Dls_active'
Bonjour manoss76
Si j'ai bien compris, voici ce que vous pouvez faire
Private Sub CommandButton1_Click()
Dim Col As Long, dLig As Long, Lig As Long, Ind As Long
Dim Lbx As MSForms.ListBox
' Définir la ListBox de l'USF2
Set Lbx = UserForm2.ListBox1
' Avec al feuille
With Sheets("Dls_actives")
' Dernière ligne remplie
dLig = .Range("B" & Rows.Count).End(xlUp).Row
' Parcourir chaque ligne
'Combo1 EPCI = à rechercher ds colonne N feuille 'Dls_active'
'Combo4 Quartil = à rechercher ds colonne K feuille 'Dls_active'
'Combo6 Type bien = à rechercher ds colonne P feuille 'Dls_active'
'Combo2 Commune = à rechercher ds colonne H feuille 'Dls_active'
'Combo7 Nature = à rechercher ds colonne Q feuille 'Dls_active'
'Combo5 Compo familiale = à rechercher ds colonne R feuille 'Dls_active'
For Lig = 2 To dLig
If .Range("N" & Lig) Like "*" & Me.ComboBox1 & "*" _
And .Range("K" & Lig) Like "*" & Me.ComboBox4 & "*" _
And .Range("P" & Lig) Like "*" & Me.ComboBox6 & "*" _
And .Range("H" & Lig) Like "*" & Me.ComboBox2 & "*" _
And .Range("Q" & Lig) Like "*" & Me.ComboBox7 & "*" _
And .Range("R" & Lig) Like "*" & Me.ComboBox5 & "*" Then
Lbx.AddItem .Range("B" & Lig)
Ind = Lbx.ListCount - 1
For Col = 2 To 10
Lbx.Column(Col - 1, Ind) = .Cells(Lig, Col).Value
Next Col
End If
Next Lig
End With
'UserForm1.Visible = False
UserForm2.Show
End SubA+
Oui Super Bruno , je vais creuser d'avantage mais ca a l'air d'etre ca !
Par hasard, vous savez comment faire pour ne plus avoir de donnée dans les combo box?
Par exemple si je ne veux plus utiliser le filtre "commune" , actuellement je suis obligé de sélectionner quelque chose
Ou alors je vide mes combobox apres affichage sur la listbox?
Re,
Une fois que la ListBox est alimentée, vous pouvez effectivement vider les Combobox
Et ensuite afficher l'USF2 ou alors vider après l'avoir affiché
A+
Il y a un combobox motif prioritaire....
EPCI = à rechercher ds colonne N feuille 'Dls_active' Correspond pas
Type bien = à rechercher ds colonne P feuille 'Dls_active' Correspond pas
Nature = à rechercher ds colonne Q feuille 'Dls_active' Correspond pas
Compo familiale = à rechercher ds colonne R feuille 'Dls_active' Correspond pas
Quand tu auras une feuille "Dls_actives" qui correspondra à ta demande le fichier ci dessous marchera...
Tu peux faire des essai avec Commune... pas avec Quartil car combobox=1,2,3 et données =Quartil 1, Quartil 2, etc...
A+ François
Merci à vous pour votre investissement et vos solutions !
Bonjour , @BrunoM45,
Comment je peux faire pour avoir plus de colonnes de visibles dans ma listBox?
Ca doit ce situer ici non?=>
Lbx.AddItem .Range("B" & Lig)
Ind = Lbx.ListCount - 1
For Col = 3 To 11
Lbx.Column(Col - 2, Ind) = .Cells(Lig, Col).Value
'Lbx.Column(Col - 2, Ind) = .Cells(Lig, Col).Value
Next Col
Bonsoir,
La méthode AddItem est limitée à 10 colonnes, il faut sinon utiliser l'Alimentation par List.
Mais il ne faudra plus compter sur les filtres à moins de passer pas une feuille temporaire