J'ai réalisé un premier formulaire qui identifie les risques professionnels de chaque activités de mon entreprise.

Mon dernier objectif est d'affecter à chaque salarié une fiche d'exposition individuelle, compilant les risques rencontrés pour toutes les activités qu'ils effectuent:

Ma Listbox 2 s'emplit enfin des noms de secteurs d'activités, modifiable via mes ToggleButtons.

Je souhaite afficher les risques professionnels de chacune de ces activités dans ma ListBox1 (sans doublons).

Je dispose d'une formule fonctionnelle dans un autre USF qui, à partir de la sélection d'une Combobox, alimente une listBox identique. (codes proposés par JacquesBoisgonthier et Ben_L).



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
  Private Sub ComboBox1_Click()
    Dim F As Worksheet, bd As Variant, i As Integer, temp As Variant
    Me.TextBox1.Value = Me.ComboBox1.Text
    Me.ListBox1.Clear
    Set F = Sheets(Me.TextBox1.Text)
    bd = F.Range("F9:J" & F.[F65000].End(xlUp).Row).Value2  ' tableau bd(n,1) pour rapidité
    For i = LBound(bd) To UBound(bd)
        If bd(i, 1) <> "" Then Call AddArrayElm(temp, Array(bd(i, 1), bd(i, 3), bd(i, 4), bd(i, 5)))
    Next i
 
    Me.ListBox1.ColumnCount = 4
    Me.ListBox1.List = Application.Transpose(temp) 
 
 Private Sub AddArrayElm(Arr As Variant, Elm As Variant)
    Dim i As Long, nRow As Long, nCol As Long
    nCol = UBound(Elm)
    If Not IsArray(Arr) Then
        nRow = 0
        ReDim Arr(nCol, nRow)
    Else
        nRow = UBound(Arr, 2) + 1
        For i = 0 To nRow - 1
            If Elm(0) = Arr(0, i) Then Exit Sub
        Next i
        ReDim Preserve Arr(nCol, nRow)
    End If
    For i = 0 To nCol
        Arr(i, nRow) = Elm(i)
    Next i
End Sub
Comment adapter ce code pour que de sélection d'un unique item de Combobox1, je puisse passer à chaque item d'une ListBox2?