Combobox dépendantes

Bonjour à tous,

Étant débutant dans le VBA, mais grâce à l'aide de votre forum j'ai pu avancer sur ma macro, mais la je bloque depuis quelques jours.

Je vous explique :

Pour mon entreprise, je dois effectuer une macro qui permet à des managers de voir des informations.

J'ai donc créer un formulaire de recherche :

form

Hors lorsque je sélectionne un manager, je voudrais que le choix des agents se réduit, afin que le manager ne voit que ses agents, et pareil pour le stage, je voudrais que le manager voit que les stages de l'agent qu'il a sélectionné.

Ainsi une fois ces 3 combobox remplie que ça m'affiche dans la textbox seulement les dates disponibles pour le stage demandé.

Les informations concernant le manager, l'agent et le stage sont dans un classeur nommé "Besoin"

Les informations concernant la date et le stage est répété aussi dans un classeur nommé "Session"

Mon code à l'heure d'aujourd'hui me permet pas de réduire les choix possibles dans les combobox

Voici le code :

Private Sub Quitter_Click()
Unload Me
End Sub

Private Sub UserForm_Initialize()
Me.ComboBox1.Clear
Dim F As Worksheet

  Set F = Sheets("Besoin")
  Set mondico = CreateObject("Scripting.Dictionary")

  a = F.Range("D2:D" & F.[D65000].End(xlUp).Row)   ' tableau a(n,1) pour rapidité

  For i = LBound(a) To UBound(a)
    If a(i, 1) <> "" Then mondico(a(i, 1)) = ""
  Next i
  '--avec tri
  temp = mondico.keys
  Call Tri(temp, LBound(temp), UBound(temp))
  Me.ComboBox1.List = temp

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
        temp = a(G): a(G) = a(d): a(d) = temp
        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

Private Sub ComboBox1_Change()

Dim F As Worksheet
Dim n As Variant

Dico_2:
  Set F = Sheets("Besoin")
  Set mondico = CreateObject("Scripting.Dictionary")

  a = F.Range("B2:B" & F.[B65000].End(xlUp).Row)   ' tableau a(n,1) pour rapidité

  For i = LBound(a) To UBound(a)
    If a(i, 1) <> "" Then mondico(a(i, 1)) = ""
  Next i
  '--avec tri
  temp = mondico.keys
  Call Tri(temp, LBound(temp), UBound(temp))
  Me.ComboBox2.List = temp

End Sub

En espérant que vous pussiez m'aide;

Bien cordialement

Salut tabernake,

Dans l'évènement change de ta Combobox de sélection du Manager, il faut faire quelque chose du genre :

If Combobox_manager.value ="Benoît Brisfer" then
Combobox_agent.RowSource = "U5:U8"
Else if Combobox_manager.value ="Tonton Placide" then
Combobox_agent.RowSource = "U9:U12"
End if

En ayant au préalablement rendu non sélectionnable ta Combobox agents.

Il faut savoir qu'il y a d'autre moyen d'alimenter une Combobox qu'avec RowSource.

En espérant t'avoir aidé,

Bonne journée,

Baboutz

Bonjour à toi Baboutz

Alors malheuresement le problème n'est pas si simple (je m'excuse pour le manque e précision), alors en faite les donnés change chaque semaine, c'est à dire que le manager peut voir en semaine 41 l'agent x et y, et en semaine 42 voir l'agent x et z.

Ces donnés de besoin comporte environ 12000 lignes et les sessions environ 70

Donc il me faut un moyen d'aller chercher les informations quelques soit la variable donné dans la combobox1 (Combobox manager)

Bonjour tabernake,

D'accord, mais c'est précisé dans le tableau ça non ? Que S41, le manager à agent x et y et que S42 y et z ?

Dans ce cas, tu récupères le N° de la semaine en cours en VBA avec Format(Date, "WW") puis tu fais un .find pour chercher dans le tableau de ta feuille Excel le N° de la semaine afin de récupère la plage des agents à renseigner !

Rechercher des sujets similaires à "combobox dependantes"