[RESOLU] Gestion des listes déroulantes.

zeltron24

XLDnaute Impliqué
Bonsoir le Forum,

Je fais appel à vous pour un souci de code dans un formulaire contenant deux listes déroulantes combiné entre elle; a l'ouverture du FRMAdresse, la 1ère liste me donne un choix, lorsque celui ci est fait, la 2ème me donne les possibilités offertes par mon 1èr choix (Voir feuille "Liste") Lorsque j'ai choisi dans ma 2ème liste, mon choix doit s'inscrire dans les TxtBox (Box1, Box2.......)
Puis après seulement je peux valider pour mettre le résultat dans les cellules oranges
Merci de me donner un petit coup de pouce, j'espère avoir été assez clair dans mes explications.
Cordialement
 

Pièces jointes

  • Classeur1.xls
    34 KB · Affichages: 73
  • Classeur1.xls
    34 KB · Affichages: 85
  • Classeur1.xls
    34 KB · Affichages: 90
Dernière édition:

PMO2

XLDnaute Accro
Re : Gestion des listes déroulantes.

Bonjour,

Essayez de remplacer l'intégralité du code du UserForm par le code suivant
Code:
Private Sub BtnClose_Click()
Unload Me
Range("A2").Select
End Sub


Private Sub UserForm_Initialize()

  Set f = Sheets("Liste")
  Set MonDico = CreateObject("Scripting.Dictionary")
  For Each c In Range(f.[A3], f.[A150].End(xlUp))
    If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
  Next c
  Me.ComboBox1.List = MonDico.items
  SendKeys "{F4}"
  
End Sub

Private Sub ComboBox1_Change()
  Set f = Sheets("Liste")
  i = 0
  Me.ComboBox2.Clear
  For Each c In Range(f.[A3], f.[A150].End(xlUp))
   If CStr(c) = Me.ComboBox1 Then   '///
       Me.ComboBox2.AddItem
       Me.ComboBox2.List(i, 0) = c.Offset(, 1).Value
       Me.ComboBox2.List(i, 1) = c.Offset(0, 2).Value
       Me.ComboBox2.List(i, 2) = c.Offset(0, 3).Value
       Me.ComboBox2.List(i, 3) = c.Offset(0, 4).Value
       
       i = i + 1
   End If
  Next c
  Me.ComboBox2.SetFocus
  SendKeys "{F4}"
  
End Sub

Private Sub ComboBox2_Change()
Dim i As Long
If Me.ComboBox2.ListIndex > -1 Then
  For i& = 0 To 3
    Me.Controls("Box" & i + 1 & "") = Me.ComboBox2.Column(i)
  Next i
End If
End Sub

Private Sub BtnValider_Click()
Dim Cible As Range
Dim i As Long
Dim var As Variant
Set Cible = Range("f6")
For i& = 0 To 3
  var = Me.Controls("Box" & i + 1 & "")
  If IsNumeric(var) Then var = CDbl(var)
  Cible.Offset(i, 0) = var
Next i
Unload Me
Range("A2").Select
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 294
Messages
2 086 893
Membres
103 404
dernier inscrit
sultan87