Choix successifs (listes différence) combobox crées at runtime

GafsiTN

XLDnaute Nouveau
Bonjour à tous,

J'ai réussi à créer un userform dans lequel je crée des combox chaque fois qu'on clique sur une commande.
Mon souci c'est lorsque je choisis une valeur dans le premier combobox, je veux que ce choix n’apparaisse plus dans les combobox qui seront crées ultérieurement.
J'attache le code de userform

Je joins le fichier.
Merci d'avance pour votre aide.
 

Pièces jointes

  • Combobox.xlsm
    15.7 KB · Affichages: 36
  • Combobox.xlsm
    15.7 KB · Affichages: 39

Dranreb

XLDnaute Barbatruc
Re : Choix successifs (listes différence) combobox crées at runtime

Bonsoir.

je l'ai eu comme ça :
VB:
Option Explicit
Dim WithEvents CBx As MSForms.ComboBox
Dim TCBx() As MSForms.ComboBox

Private Sub UserForm_Initialize()
ReDim TCBx(0 To 0)
J1U.Value = UBound(TCBx)
End Sub

Private Sub CommandButton1_Click()
Set CBx = Me.Controls.Add("Forms.ComboBox.1")
CBx.Left = 30
CBx.Top = 126 + UBound(TCBx) * 20
CBx.Height = 15.75
CBx.Width = 156
If UBound(TCBx) = 0 Then
   CBx.List = Feuil1.[MarketList].Value
   ReDim TCBx(1 To 1)
   Set TCBx(1) = CBx
Else
   TCBx(UBound(TCBx)).Locked = True
   CBx.List = TCBx(UBound(TCBx)).List
   CBx.Text = TCBx(UBound(TCBx)).Text
   CBx.RemoveItem CBx.ListIndex
   CBx.Text = ""
   ReDim Preserve TCBx(1 To UBound(TCBx) + 1)
   Set TCBx(UBound(TCBx)) = CBx
   End If
CBx.Locked = False
J1U.Value = UBound(TCBx)
CommandButton1.Enabled = False
End Sub

Private Sub CBx_Change()
CommandButton1.Enabled = CBx.ListIndex > -1
End Sub
M'enfin bon, c'était juste pour le fun, en partant de ce que vous aviez fait. Il vaudrait mieux une seule ComboBox et une ListBox pour y ranger les choix successifs.
 
Dernière édition:

GafsiTN

XLDnaute Nouveau
Re : Choix successifs (listes différence) combobox crées at runtime

Merci Dranreb.
En fait, comment faire pour avoir la possibilité de modifier la valeur du premier combobox si j'avais déjà crée le deuxième combobox.

Pouvez-vous svp me montrer votre méthode : une seule ComboBox et une ListBox pour y ranger les choix successifs.

Merci Beaucoup.
 

Dranreb

XLDnaute Barbatruc
Re : Choix successifs (listes différence) combobox crées at runtime

C'est simple: un AddItem dans la ListBox s'accompagne d'un RemoveItem dans la ComboBox, sur le modèle de celui que j'ai déjà indiqué dans la CommandButton1_Click, et vice versa, peut être.
 

GafsiTN

XLDnaute Nouveau
Re : Choix successifs (listes différence) combobox crées at runtime

Merci Dranreb.
Je ne suis pas un expert, d'ailleurs j'ai galéré pour monter le premier code :confused:
Pouvez-vous svp intégrer votre proposition dans votre code.
Par ailleurs, si on ajoute la possibilité de modifier la valeur du premier combobox si j'avais déjà crée le deuxième combobox dans votre code ça serait parfait pour moi.

Merci d'avance.
 

Dranreb

XLDnaute Barbatruc
Re : Choix successifs (listes différence) combobox crées at runtime

Vous définissez une ComboBox1 et une ListBox1 et :
VB:
Option Explicit

Private Sub UserForm_Initialize()
Me.ComboBox1.List = Feuil1.[MarketList].Value
End Sub

Private Sub ComboBox1_Change()
If ComboBox1.ListIndex < 0 Then Exit Sub
Me.ListBox1.AddItem ComboBox1.Text
ComboBox1.RemoveItem ComboBox1.ListIndex
ComboBox1.Text = ""
End Sub
 

GafsiTN

XLDnaute Nouveau
Re : Choix successifs (listes différence) combobox crées at runtime

Merci Dranreb

Je comprends maintenant votre proposition, mais ça ne répond pas parfaitement à mon besoin.
J'aurais besoin de plusieurs combobx crées at runtime mais mon souci était par rapport à la liste, c'est pourquoi j'ai essayé d'utiliser CreateObject("Scripting.Dictionary").

Merci
 

Dranreb

XLDnaute Barbatruc
Re : Choix successifs (listes différence) combobox crées at runtime

Et si en cliquant sur une ligne de la ListBox1 ça la remettait dans ComboBox1, ça irait ?
Remarque: ce serait presque le même code que dans la ComboBox1_Change à mettre dans une ListBox1_Click mais en y intervertissant ComboBox1 et ListBox1
 

Dranreb

XLDnaute Barbatruc
Re : Choix successifs (listes différence) combobox crées at runtime

Pfou ! La ListBox aime pas qu'on remove sa ListIndex ! Qu'à cela ne tienne on va la récupérer d'abord dans une variable.
Et on va faire pareil pour la ComboBox par souci d'homogénéité.
VB:
Option Explicit

Private Sub UserForm_Initialize()
Me.ComboBox1.List = Feuil1.[MarketList].Value
End Sub

Private Sub ComboBox1_Change()
Dim L As Long
L = ComboBox1.ListIndex: If L < 0 Then Exit Sub
Me.ListBox1.AddItem ComboBox1.Text
ComboBox1.Text = ""
ComboBox1.RemoveItem L
End Sub

Private Sub ListBox1_Click()
Dim L As Long
L = ListBox1.ListIndex: If L < 0 Then Exit Sub
Me.ComboBox1.AddItem ListBox1.Text
ListBox1.ListIndex = -1
ListBox1.RemoveItem L
End Sub
 

GafsiTN

XLDnaute Nouveau
Re : Choix successifs (listes différence) combobox crées at runtime

Bonjour,
Je reviens vers vous, après des nuits de casse tête, je suis arrivé à ce que je voulais faire, il me reste juste un petit pas.
Lorsque je commence à créer plus qu'un combo, et je veux revenir au premier combobox, "Private Sub ctlCombo_Click()" ne fonctionne plus.

Merci d'avance pour votre aide.
 

Pièces jointes

  • Combobox.xlsm
    21.5 KB · Affichages: 32
  • Combobox.xlsm
    21.5 KB · Affichages: 44

Discussions similaires

Statistiques des forums

Discussions
312 913
Messages
2 093 534
Membres
105 750
dernier inscrit
fred13340