Rapport de message :*
 

Userform, Liste déroulante dépendante sans doublon

Titre du sujet : Userform, Liste déroulante dépendante sans doublon
par Theo44 le 25/01/2021 11:15:20

Bonjour,

Je débute en VBA, pour progresser, je cherche à réaliser un formulaire, cependant je rencontre un blocage pour lier les listes déroulantes. 

La 1ére liste = L_TC qui dépendant de la liste en colonne H 

La 2éme liste = T_Tiers elle affiche la colonne J sans doublon

Maintenant je chercher à lié la liste T_Tiers au résultat de la selection de la 1ére liste L_TC le lien étant effectué colonne J. 

 

Private Sub Fermer_click()
    Unload Me
End Sub


Private Sub UserForm_Initialize()
  Set P = Sheets("P")
  Me.L_TC.List = P.Range("H3:H" & P.[H2500].End(xlUp).Row).Value
  
  Set mondico = CreateObject("Scripting.Dictionary")
  a = P.Range("j2:j" & P.[j5000].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
  'Me.L_Tiers.List = MonDico.keys
  '--avec tri
  temp = mondico.keys
  Call Tri(temp, LBound(temp), UBound(temp))
  Me.L_Tiers.List = temp
  Me.L_Cat.List = P.Range("k2:k" & P.[k2500].End(xlUp).Row).Value
  Me.L_Comptes.List = P.Range("l2:q" & P.[q2500].End(xlUp).Row).Value
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



Je vous joins mon fichier. 

Bien à vous
Théo