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.
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 :
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
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 @+
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