Bonjour à tous !
Dites moi, j'ai besoin de vos lumières.
Actuellement, j'ai modifié le ruban pour afficher une userform avec la liste des salariés dans une listbox.
Aujourd'hui, je clique sur le ruban, il ouvre l'userform et dans l'initialisation il rempli la listbox. L'appuie sur le bouton Ok fait tout fermer.
Je voudrais tout centraliser dans des Modules pour ne pas avoir de macro dans les userforms (histoire de m'y retrouver).
Là où je bloque, c'est que je voudrais remplir une listbox puis ouvrir la Userform: Sauf que je rempli une listbox qui n'existe pas, ou sinon je n'arrive pas à initialiser la listbox par le code de la macro. Quelqu'un aurait une piste?
Contenu de la macro du ruban:
Contenu de la macro appelée par le ruban:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Sub GpSalaries_ControleFiches(ByVal control As IRibbonControl) ControleFichesExistantes End Sub
Et mon code pour générer la liste:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Sub ControleFichesExistantes() Dim Lb_Salaries As MSForms.ListBox Call GenererListeSalaries(Lb_Salaries) Set Lb_Salaries = Lb_ListeSalaries Uf_ControleSalaries.Show End Sub
J'ai un beug dans cette dernière, variable objet non définie sur lb.clear.
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
24
25
26
27
28
29
30
31
32
33
34 Sub GenererListeSalaries(ByVal lb As MSForms.ListBox) Dim Ws As Excel.Worksheet Dim ListeSalaries() Dim Temporaire As String Dim i As Integer, j As Integer i = 1 For Each Ws In ThisWorkbook.Worksheets If (Left(Ws.Name, 3) = "FSE") Then ReDim Preserve ListeSalaries(i) ListeSalaries(i) = Mid(Ws.Name, 7) i = i + 1 End If Next For i = 1 To UBound(ListeSalaries) - 1 ' Du premier nom à l'avant-dernier For j = i + 1 To UBound(ListeSalaries) ' Du 2eme au dernier If ListeSalaries(i) > ListeSalaries(j) Then Temporaire = ListeSalaries(j) ListeSalaries(j) = ListeSalaries(i) ListeSalaries(i) = Temporaire End If Next j Next i lb.Clear For i = 1 To UBound(ListeSalaries) lb.AddItem ListeSalaries(i) Next i End Sub
A noter que la listbox de mon userform s'appelle "Lb_ListeSalaries".
Merci par avance !
Vincent
Partager