Bonjour à tous,
C'est déjà ma deuxième demande sur ce forum (ehh oui déjà),elle fait suite à la première, celle-ci est la suivante :
Je souhaitais faire une ListBox interactive
Je résume l'utilité du fichier Excel, on montre des priorité de sessions a remplir et le manager voit s'il lui a besoin de mettre un agent sur la formation, via le UserForm suivant :
Le manager se sélectionne :
Ensuite il voit toutes les sessions disponibles, et lorsqu'il clique sur une session :
J'aimerais que ça lui indique dans la ListBox2 à droite ça lui indique les agents concerné par cette formation (Sans cliquer sur le bouton "Quels agent est concerné", il me permettais de faire des test)
Hors je n'y arrive pas, celui me fait des décalages ou alors ne m'affiche rien 1x sur deux
Je vous met le code ci dessous, ainsi que le fichiers en pièce jointe :
Je vous remercie d'avance de vous pencher sur mon soucis.
Cordialement,
tabernake
C'est déjà ma deuxième demande sur ce forum (ehh oui déjà),elle fait suite à la première, celle-ci est la suivante :
Je souhaitais faire une ListBox interactive
Je résume l'utilité du fichier Excel, on montre des priorité de sessions a remplir et le manager voit s'il lui a besoin de mettre un agent sur la formation, via le UserForm suivant :
Le manager se sélectionne :
Ensuite il voit toutes les sessions disponibles, et lorsqu'il clique sur une session :
J'aimerais que ça lui indique dans la ListBox2 à droite ça lui indique les agents concerné par cette formation (Sans cliquer sur le bouton "Quels agent est concerné", il me permettais de faire des test)
Hors je n'y arrive pas, celui me fait des décalages ou alors ne m'affiche rien 1x sur deux
Je vous met le code ci dessous, ainsi que le fichiers en pièce jointe :
VB:
Private Sub UserForm_Initialize()
Set f = Sheets("Besoin")
Set mondico = CreateObject("Scripting.Dictionary")
Bd = f.Range("A2:D" & f.[D65000].End(xlUp).Row) ' tableau Bd(n,1) pour rapidité
For i = LBound(Bd) To UBound(Bd)
If Bd(i, 4) <> "" Then mondico(Bd(i, 4)) = ""
Next i
'--avec tri
temp = mondico.keys
Call Tri(temp, LBound(temp), UBound(temp))
Me.ComboBox1.List = temp
'Paramètrage de la ListBox
Me.ListBox1.ColumnCount = 3 'Nombre de colonne
Me.ListBox1.ColumnWidths = "150; 100; 50" 'La taille de la colonne 1,2 et 3
End Sub
Private Sub ComboBox1_Change()
Dim Bd2, j As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Me.ListBox1.Clear
Bd2 = Sheets("session").Range("A2:C" & Sheets("session").[A65000].End(xlUp).Row)
Set mondico = CreateObject("Scripting.Dictionary")
' Stop
For i = LBound(Bd2) To UBound(Bd2)
Me.ListBox1.AddItem Bd2(i, 1)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = Bd2(i, 2)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = Bd2(i, 3)
Next i
End Sub
Private Sub CommandButton2_Click()
End Sub
Private Sub ListBox1_Click()
If Me.ListBox1.ListIndex = -1 Then Exit Sub
ListBox2.Clear
Dim j As Byte
Dim sel As Variant
For j = 1 To ListBox1.ListCount
If ListBox1.Selected(j) = True Then
Selection = ListBox1.Value
End If
Next
Set f = Sheets("Besoin")
Bd = f.Range("A2:K" & f.[K65000].End(xlUp).Row)
For i = LBound(Bd) To UBound(Bd)
If (Bd(i, 4) = Me.ComboBox1 And Bd(i, 3) = Selection) Then
Me.ListBox2.AddItem Bd(i, 2)
Else
Me.ListBox2.AddItem Bd(i, 7)
End If
Next i
End Sub
Private Sub Quitter_Click()
Unload Me
End Sub
Sub Tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) \ 2)
G = gauc: d = droi
Do
Do While a(G) < ref: G = G + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If G <= d Then
Tbl = a(G): a(G) = a(d): a(d) = Tbl
G = G + 1: d = d - 1
End If
Loop While G <= d
If G < droi Then Call Tri(a, G, droi)
If gauc < d Then Call Tri(a, gauc, d)
End Sub
Je vous remercie d'avance de vous pencher sur mon soucis.
Cordialement,
tabernake