Modifier mon code choix combobox

  • Initiateur de la discussion Initiateur de la discussion maval
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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.
 
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.
 
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.
 
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)
 
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)
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
281
Réponses
3
Affichages
193
Réponses
9
Affichages
201
Réponses
3
Affichages
665
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
4
Affichages
505
Réponses
5
Affichages
182
Retour