ListIndex mis à jour dans Combobox

2susy

XLDnaute Junior
Bonjour à tous,

je souhaite savoir s'il est possible de mettre à jour une combobox suivant l'item sélectionné dans une listbox?

je pensais à ce type de code qui ne fonctionne malheureusement pas !
Code:
If UserForm1.ListBox1.ListIndex <> -1 Then
UserForm1.ComboSelect.ListIndex = UserForm1.ListBox1.ListIndex
End If

si l'un(e) d'entre vous avait une idée...
 

Pièces jointes

  • Items.zip
    10.5 KB · Affichages: 77
  • Items.zip
    10.5 KB · Affichages: 76
  • Items.zip
    10.5 KB · Affichages: 81

skoobi

XLDnaute Barbatruc
Re : ListIndex mis à jour dans Combobox

Bonjour,

le code n'est pas placé au bon endroit.
Il faut le mettre dans le code de la listbox (dans le code de l'userform):

Code:
Private Sub ListBox1_Click()
If ListBox1.ListIndex <> -1 Then ComboBox2.ListIndex = UserForm1.ListBox1.ListIndex
End Sub
 

2susy

XLDnaute Junior
Re : ListIndex mis à jour dans Combobox

Merci, effectivement en déplaçant le code c'est un peu mieux mais il y a un décalage entre ce qui s'affiche dans la combobox2 et l'item sélectionné. Y'at-il un moyen de contourner ce problème?
je joins à nouveau le fichier avec ce nouvel élément, on y est presque !
 

Pièces jointes

  • Items.zip
    11.1 KB · Affichages: 95
  • Items.zip
    11.1 KB · Affichages: 97
  • Items.zip
    11.1 KB · Affichages: 105

2susy

XLDnaute Junior
Re : ListIndex mis à jour dans Combobox

Oui en effet avec l'exemple que j'avais choisi ça fonctionne (classe A item 4) mais en choisissant classe B, ça ne fonctionne pas, il prend l'index et non pas la valeur. du coup je pensais un code du genre :
Code:
Dim i As Integer, j As Integer
UserForm1.ListBox1.Text = UserForm1.ListBox1.List(j)
For i = 0 To UserForm1.ComboBox2.ListCount - 1
If j = i Then
UserForm1.ComboBox2.ListIndex = i
End If
Next i

mais ça ne fonctionne pas...
merci en tout cas de t'intéresser à mon cas ;)
 

skoobi

XLDnaute Barbatruc
Re : ListIndex mis à jour dans Combobox

Re,

Oui en effet avec l'exemple que j'avais choisi ça fonctionne (classe A item 4) mais en choisissant classe B, ça ne fonctionne pas, il prend l'index et non pas la valeur
On tourne en rond. Je ne vois toujours pas ce que tu veux dire. Quelle valeure?
Si je sélectionne item4 dans la listbox1 (en ayant choisi classeA ou B), dans la combobox2 s'affiche bien "item4".
 

2susy

XLDnaute Junior
Re : ListIndex mis à jour dans Combobox

J'ai dû mal m'exprimer, désolée, ce que je veux dire c'est que si par exemple tu sélectionne Classe B item 8, la combo2 affiche item2, or je souhaite qu'il affiche la même valeur que celle sélectionnée dans la ListBox1 à savoir item8.

J'espère que c'est plus clair? merci encore,
 

bqtr

XLDnaute Accro
Re : ListIndex mis à jour dans Combobox

Bonosir 2susy, skoobi :)

Si j'ai bien compris teste ceci :

Tout d'abord, supprime tout tes codes dans tous les modules. Puis copie ces codes dans le module de code du Userform (click droit sur le Userform et Code et coller)

Code:
Private Sub ComboBox1_Change()

Dim j As Long
ListBox1.Clear
ListBox1.ColumnCount = 2
ListBox1.ColumnWidths = "80;60"
ComboBox2.ListIndex = -1
For j = 2 To Sheets("Feuil1").Range("A" & Sheets("Feuil1").Cells.Rows.Count).End(xlUp).Row
    If ComboBox1.Text = Sheets("Feuil1").Range("B" & j).Value Then
       With UserForm1.ListBox1
           .AddItem Sheets("Feuil1").Range("A" & j)
           .List(.ListCount - 1, 1) = Sheets("Feuil1").Range("B" & j)
       End With
    End If
Next j

End Sub

Private Sub ListBox1_Click()
If ListBox1.ListIndex <> -1 Then ComboBox2 = ListBox1
End Sub

Private Sub UserForm_Initialize()

ComboBox2.Clear
With UserForm1.ComboBox1
   .AddItem "classe A"
   .AddItem "classe B"
   .AddItem "classe C"
End With
ComboBox2.ColumnCount = 2
ComboBox2.ColumnWidths = "80;60"
For i = 2 To Sheets("Feuil1").Range("A" & Cells.Rows.Count).End(xlUp).Row
    With UserForm1.ComboBox2
        .AddItem Sheets("Feuil1").Range("A" & i)
        .List(.ListCount - 1, 1) = Sheets("Feuil1").Range("B" & i)
    End With
Next i

End Sub
Et dans le module du ThisWorkbook copie/colle ceci :
Code:
Sub Workbook_Open()
UserForm1.Show
End Sub
A+
 
Dernière édition:

Discussions similaires

Réponses
10
Affichages
557
Réponses
15
Affichages
564

Statistiques des forums

Discussions
312 581
Messages
2 089 916
Membres
104 305
dernier inscrit
EDIT