Remplir Listbox selon choix dans Combobox

jofdm

XLDnaute Occasionnel
Bonjour à tous,
Je fais appel à vous pour un problème qui a été déjà plusieurs fois évoqué mais sur lequel je sèche depuis hier malgré les nombreux exemples présents sur le forum.
Dans l'exemple joint, j'aimerais que lorsqu'on sélectionne le "Département" dans la combobox1, la liste des personnes appartenant à ce département apparaisse dans la listbox.

Ensuite, je souhaiterais pouvoir sélectionner une ou plusieurs personnes de la listbox et, en fonction de la valeur de la combobox2 (Procédure), indiquée dans la feuille "Formation" FAIT pour chaque personne sélectionnée et pour la procédure sélectionnée. Je ne vous demande pas de m'écrire le code mais simplement de m'indiquer la façon de récupérer les valeurs sélectionnées dans la listbox afin de pouvoir lancer le test par rapport à la feuille Formation.

Merci d'avance pour votre aide
 

Pièces jointes

  • Book1.xls
    37 KB · Affichages: 199
  • Book1.xls
    37 KB · Affichages: 208
  • Book1.xls
    37 KB · Affichages: 212

kjin

XLDnaute Barbatruc
Re : Remplir Listbox selon choix dans Combobox

Bonsoir,
Solution basée sur l'organisation actuelle des données
A+
kjin
 

Pièces jointes

  • jofdm.xls
    37.5 KB · Affichages: 475
  • jofdm.xls
    37.5 KB · Affichages: 466
  • jofdm.xls
    37.5 KB · Affichages: 480

GeoTrouvePas

XLDnaute Impliqué
Re : Remplir Listbox selon choix dans Combobox

Bonjour,

j'aimerais que lorsqu'on sélectionne le "Département" dans la combobox1, la liste des personnes appartenant à ce département apparaisse dans la listbox.

Pour cela, il faut que tu utilises l'évenement Combobox1_Change.
Lorsque cet évenement est déclenché :
1) tu vides ton listbox
2) tu cherches le numéro de colonne correspondant au nom du département choisi. Pour cela utilise cette ligne de code :

Code:
Application.Match(Combobox1.text, Sheets("Personnel").Range(Cells(1, 1), Cells(1, 8)), 0)

3) Tu recharges ta Listbox avec la colonne que tu viens de trouver. Pour cela, tu peux utiliser une boucle de ce genre (à adapter) :

Code:
i = 1
While Sheets("Personnel").Cells(i, Numerodecolonne) <> ""
ListBox1.AddItem Sheets("Personnel").Cells(i, Numerodecolonne)
i = i + 1
Wend

Ensuite, je souhaiterais pouvoir sélectionner une ou plusieurs personnes de la listbox

Pour cela il doit y avoir une propriété de la listbox appellée Multiselect à mettre à True

en fonction de la valeur de la combobox2 (Procédure), indiquée dans la feuille "Formation" FAIT pour chaque personne sélectionnée et pour la procédure sélectionnée.

C'est un peu la même façon de procéder qu'au dessus. Il faut que tu commences par :
1) trouver le numéro de ligne correspondant à la formation choisie dans le combobox2 avec "Application.match"
2) "scanner" toutes les lignes de ta listbox pour voir si elles sont sélectionnées
3) Dès que tu trouves une ligne sélectionnée, trouver le numéro de colonne correspondant à cette personne avec "Application.match"
4) Tu te sers d'un "Sheets("Formation").Cells(Numerodelignetrouve, Numerodecolonnetrouve) = "FAIT"

J'espère que j'ai été suffisament clair dans mes explications. N'hésite pas à demander des précisions si besoin.

Edit : Je viens de retrouver une macro que j'avais faite pour scanner les lignes sélectionnées dans un listview. Je ne saisi pas si c'est la même façon de procéder pour un listbox mais à priori je dirai que oui. Si ça peut t'aider :

Code:
For i = 1 To LListView1.ListItems.Count
    If LListView1.ListItems(i).Selected = True Then
        NDossier = LListView1.ListItems(i).Key
    End If
Next
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Remplir Listbox selon choix dans Combobox

Bonjour Jofdm, bonjour le forum,

En pièce jointe ton fichier modifié avec les codes commentés.



Édition :

Oooops 'achement en r'tard moi !!!! Salut Kjin, GéoTrouvePas...
 

Pièces jointes

  • Jofdm_v01.xls
    37.5 KB · Affichages: 410
  • Jofdm_v01.xls
    37.5 KB · Affichages: 435
  • Jofdm_v01.xls
    37.5 KB · Affichages: 477

jofdm

XLDnaute Occasionnel
Re : Remplir Listbox selon choix dans Combobox

Bonsoir Robert et GeoTrouvePas,
Merci également à vous pour vos réponses que je ne manquerai pas d'étudier.
De plus, il y a fort à parier que je sollicite de nouveau votre aide... En effet, le fichier joint était une version "allégée" de celui qui doit être mis en place et un simple copier coller des macros ne suffit pas. Il faut que je fasse une petite adaptation qui, pour l'instant, ne fonctionne pas.
Je continue à me creuser les méninges et si vraiment je n'y parviens pas, je fais appel aux spécialistes :)
Bonne soirée et @+
 

jofdm

XLDnaute Occasionnel
Re : Remplir Listbox selon choix dans Combobox

Je reviens sur ce topic car j'ai un petit souci lorsque je veux adapter le code de kjin dans mon fichier plus détaillé.
Voici le problème rencontré
Le nom de l'USF est AjoutProc
Le code d'initialisation de l'USF est
Private Sub UserForm_Initialize()
Me.ComboBox1.RowSource = "CodesProc!A2:A" & Sheets("CodesProc").Cells(1, 1).End(xlDown).Row
Me.ComboBox2.RowSource = "CodesProc!B2:B" & Sheets("CodesProc").Cells(1, 2).End(xlDown).Row
Me.ComboBox3.RowSource = "CodesProc!C2:C" & Sheets("CodesProc").Cells(1, 3).End(xlDown).Row
ComboBox4.List = Sheets("Personnel").Range("Departments").Value
End Sub

Le bouton permettant d'afficher l'USF se trouve sur une feuille appelée Menu
et le code la macro assignée à ce bouton est AjoutProc.show

Quand je clique sur le bouton, ça bugge et l'erreur est indiqué sur AjoutProc.show.

Si j'enlève cette ligne ComboBox4.List = Sheets("Personnel").Range("Departments").Value tout fonctionne.

Comment remédier à ce problème ?
Merci d'avance pour votre aide
 

kjin

XLDnaute Barbatruc
Re : Remplir Listbox selon choix dans Combobox

bonsoir,
"Departments" est une plage nommée que j'avais créée pour l'exemple (Menu --> Insertion/Nom/Définir)

Salut Robert, pas trop envahi ! :):D
A+
kjin
 
Dernière édition:

Discussions similaires

Réponses
18
Affichages
636

Statistiques des forums

Discussions
312 231
Messages
2 086 448
Membres
103 213
dernier inscrit
Poupoule