Modifier mon code choix combobox

maval

XLDnaute Barbatruc
Bonjour,

J'ai deux combobox "1&2", la première affiche la colonne "B" la deuxième affiche la colonne "F" J'aimerais que lorsque je sélectionne un genre dans la combobox2 tous les genre se trouvant dans la listbox1 s'affiche. Mon code est ceci:
Code:
Private Sub UserForm_Initialize()
'Alimenter Listbox
Dim maplage As Range, i As Integer
With ListBox1
    .ColumnCount = 12
    '.ColumnHeads = True
    .RowSource = Range("A3:L" & Range("A65536").End(xlUp).Row).Address
End With
'Stop

'Alimenter Combobox
    Dim Cell As Range
    With Sheets("Feuil1")
        For Each Cell In .Range("B3:B" & .Range("B65536").End(xlUp).Row)
            Me.ComboBox1.AddItem (Cell)
        Next
'Alimenter Combobox
        For Each Cell In .Range("F3:F" & .Range("F65536").End(xlUp).Row)
            Me.ComboBox2.AddItem (Cell)
        Next
    End With

End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
     Dim Compteur As Integer
     For Compteur = 0 To (ListBox1.ListCount - 1)
        If ListBox1.Selected(Compteur) = True Then
                 Me.TextBox5 = Me.ListBox1.List(Compteur, 0)
                 Me.TextBox6 = Me.ListBox1.List(Compteur, 1)
                 Me.TextBox7 = Me.ListBox1.List(Compteur, 2)
                 Me.TextBox8 = Me.ListBox1.List(Compteur, 3)
                 Me.TextBox9 = Me.ListBox1.List(Compteur, 4)
                 Me.TextBox10 = Me.ListBox1.List(Compteur, 5)
                 Me.TextBox11 = Me.ListBox1.List(Compteur, 6)
                 Me.TextBox12 = Me.ListBox1.List(Compteur, 7)
                 Me.TextBox13 = Me.ListBox1.List(Compteur, 8)
            Exit Sub
        End If
        Next
End Sub

Private Sub ComboBox1_Change()
With ListBox1
   If Me.ComboBox1.ListIndex <> -1 Then
      .RowSource = Sheets("Feuil1").Range("A" & ComboBox1.ListIndex + 3 & ":L" & ComboBox1.ListIndex + 3).Address
   Else
      .RowSource = Range("A3:L" & Range("A65536").End(xlUp).Row).Address
   End If
End With
End Sub

Private Sub ComboBox2_Change()
With ListBox1
   If Me.ComboBox2.ListIndex <> -1 Then
      .RowSource = Sheets("Feuil1").Range("F" & ComboBox2.ListIndex + 3 & ":L" & ComboBox2.ListIndex + 3).Address
   Else
      .RowSource = Range("A3:L" & Range("A65536").End(xlUp).Row).Address
   End If
End With
End Sub

Je vous remercie d'avance
 

Pièces jointes

  • Combobox vers listbox.xlsm
    30.3 KB · Affichages: 27

Dranreb

XLDnaute Barbatruc
Re : Modifier mon code choix combobox

Bonjour.
Pourquoi n'utilisez vous pas mes ComboBoxLiées ?
On n'a plus aucune question à se poser sur la gestion des choix dans les ComboBox !
Et plus la moindre programmation à ce sujet dans l'UserForm: il se charge de tout.
 

Dranreb

XLDnaute Barbatruc
Re : Modifier mon code choix combobox

Pour remplir la ListBox il suffit de coder différemment les procédures CL_Change et CL_Résultat. Tout est déjà là.
J'avais même déclaré TLgn() As Long en variable globale, alors que ce n'était pas nécessaire, car je subodorais qu'on pourrait un jour en avoir besoin pour garder la correspondance entre les lignes d'une ListBox et celles de la plage CL.PlgTablo.
 

Dranreb

XLDnaute Barbatruc
Re : Modifier mon code choix combobox

C'est quelque chose dans ce style, n'est ce pas :
VB:
Private Sub CL_Résultat(Lignes() As Long)
Dim TPlg(), TLBx(), N&, L&, C&
TLgn = Lignes
TPlg = CL.PlgTablo.Resize(, ListBox1.Columns.Count).Value
ReDim TLBx(0 To UBound(TLgn) - 1, 0 To ListBox1.Columns.Count - 1)
For N = 0 To UBound(TLgn) - 1: L = TLgn(N)
   For C = 0 To UBound(TLBx, 2): TLBx(N, C) = TPlg(L, C + 1): Next C, N
ListBox1.List = TLBx
If UBound(TLgn) <> 1 Then Exit Sub
LCou = TLgn(1): GarnirLesTBx ' (Procédure à écrire: elle servira à plusieurs endroits)
End Sub
À tester.
 

Dranreb

XLDnaute Barbatruc
Re : Modifier mon code choix combobox

Le classeur a-t-il été rééquipé des modules de service ?
La ListBox1_Click c'est en gros ça :
VB:
Private Sub ListBox1_Click()
LCou = Tlgn(ListBox1.ListIndex + 1)
Vlgn = CL.PlgTablo.Rows(LCou).Resize(, 12).Value
CL.ValeursDepuis Vlgn
GarnirLesTBx
End Sub
(Globales: Private VLgn(), LCou As Long)
 

maval

XLDnaute Barbatruc
Re : Modifier mon code choix combobox

RE,
J'ai mis les trois module de classe, plus les deux modules et le code

Code:
Private Sub ListBox1_Click()
 LCou = Tlgn(ListBox1.ListIndex + 1)
 Vlgn = CL.PlgTablo.Rows(LCou).Resize(, 12).Value
 CL.ValeursDepuis Vlgn
 GarnirLesTBx
End Sub
Sa me donne message d'erreur "Sub ou Fonction non définie sur la ligne
Code:
 LCou = TLgn(ListBox1.ListIndex + 1)
@+
 

grisan29

XLDnaute Accro
Re : Modifier mon code choix combobox

bonjour Dranreb, Maval

Maval tu vas t’embrouiller les idées avec 2 versions de ton classeur

un des fichier que Dranreb a déjà fait est comme celui que je vais joindre
 

Pièces jointes

  • Copie de CbxLiéesScreewy v2.xlsm
    114.3 KB · Affichages: 24
Dernière édition:

Discussions similaires

Réponses
4
Affichages
191
Réponses
17
Affichages
802

Statistiques des forums

Discussions
312 079
Messages
2 085 128
Membres
102 783
dernier inscrit
Basoje