Bonjour à tous.
Je ne trouve pas, malgré de multiples recherches et essais, la solution à un problème qui doit pourtant pas être si compliquée que ça :
Dans un Userform, j'ai plusieurs listboxs qui sont alimentées chacune par une colonne d'une feuille (sous excel97).
Je voudrais pouvoir réactualiser une listbox en fonction des valeurs selectionnées par l'utilisateur dans les listbox précédentes.
Par exemple, la listbox1 contient le nom d'entreprises clientes et la listbox2 le nom des collaborateurs. Je voudrais, lorsque l'utilisateur selectionne une ou plusieurs entreprises dans listbox1, que listbox2 n'ait comme entrées que les collaborateurs correspondants à ces entreprises.
Les entreprises sont dans la colonne D et les collaborateurs dans la colonne E, et toutes les colonnes contiennent des données à partir de la ligne 10.
J'ai donc une fonction pour alimenter une listbox (qui m'a été donnée par Qwaz , parce que là aussi je peinais comme un galérien) :
EDIT : me suis gouré, j'avais trouvé le code je sais plus où sur le net, mais Qwaz et Laetitia m'avaient vraiment beaucoup aidé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 'alimente une listbox lst à partir d'une plage Target de la feuil1 (nom = "BASE") Private Sub AlimList(lst As Object, ByVal Target As Excel.Range) Dim tablo As Variant, Tempo As Variant, i As Long, j As Long Worksheets("BASE").Activate 'à défaut d'instancier la feuille tablo = Target.Value 'triAlpha For i = 1 To UBound(tablo) For j = 1 To UBound(tablo) If tablo(i, 1) < tablo(j, 1) Then Tempo = tablo(i, 1) tablo(i, 1) = tablo(j, 1) tablo(j, 1) = Tempo End If Next j Next i 'Remplissage excluant les doublons lst.AddItem tablo(1, 1) For i = 2 To UBound(tablo) If tablo(i, 1) <> tablo(i - 1, 1) Then lst.AddItem tablo(i, 1) Next lst.ListIndex = -1 End Sub
J'ai essayé de créer plusieurs fonctions usant de différentes stratégies telles que :
- récupérer les numéros des lignes comportant les valeurs 'clés' de listbox1 pour ensuite récupérer les valeurs à mettre dans listbox2 => pas réussi
- même chose avec les coordonnées des cellules => pas réussi
A chaque fois j'ai essayé de stocker les coordonnées de plusieurs façons différentes : tableau, range (via Union), collections, etc ...
Pareil pour le "décalage" des coordonnées (pour passer de la colonne E à la D), j'ai essayé en modifiant les strings des coordonnées, en utilisant Offset, ...
Je dois juste être trop mauvais. J'ai commencé le VBA y'a une semaine pour mon stage.
Auriez-vous des pistes, ou encore mieux, des codes ? J'ai beau essayer de trouver d'autres moyens, là je cale.
Je vous mets pas mes codes pour pas vous influencer, si vous les voulez y'a qu'à demander (je les ai pas tous gardés par contre ).
Merci d'avance.
Partager