XL 2021 exclure certaines lignes d'un combobox

Claudinedu13

XLDnaute Nouveau
je voudrais alimenter mes combobox (5) uniquement avec les valeurs dont la catégorie (colonne 3) ne contient pas "Référence" ?
@patricktoulon tu m'avais donné un code à mettre sur une listbox que j'ai essayé d'adapter pour mes combobox mais je n'y arrive pas, je sais que ça doit être simple pour vous tous mais moi je galère. Merci

voilà mon code qui affiche mes combobox


VB:
Sub comboref()
Dim i
Dim f
Dim Rng
Set f = Sheets("Feuil1")
Set Rng = f.Range("B2:D" & f.[B600].End(xlUp).Row + 1)
  For i = 1 To 5
    Me.Controls("ComboBoxAb" & i).List = Application.Index(Rng, Evaluate("Row(1:" & Rng.Rows.Count & ")"), Array(1, 2, 3))
    Me.Controls("ComboBoxAb" & i).RemoveItem Me.Controls("ComboBoxAb" & i).ListCount - 1
    Me.Controls("ComboBoxAb" & i).ColumnCount = 3
    Me.Controls("ComboBoxAb" & i).ColumnWidths = "40;180;110"
  Next i
End Sub
 

Pièces jointes

  • Classeur1.xlsm
    39.7 KB · Affichages: 4
  • comboboxsansreference.jpg
    comboboxsansreference.jpg
    72.8 KB · Affichages: 2
Solution
re
bonsoir Germaine
tu n'est pas obligé de bricoler avec index
des fois il faut rester simple

les lignes avec "Référence" n'y seront pas

j'ai transformé ton tableau en tableau structuré
et donc supprimé les lignes vides dans la feuille
elles s'ajoute toute seule si tu ajoute des données
VB:
Sub comboref()
    Dim i&, t, t2()
    t = Range("Tableau1")
    For i = 1 To UBound(t)
        If LCase(t(i, 4)) <> "référence" Then
            a = a + 1: ReDim Preserve t2(1 To 3, 1 To a): t2(1, a) = t(i, 2): t2(2, a) = t(i, 3): t2(3, a) = t(i, 4)
        End If
    Next
    For i = 1 To 5
        Me.Controls("ComboBoxAb" & i).ColumnCount = 3
        Me.Controls("ComboBoxAb" & i).Column = t2
        Me.Controls("ComboBoxAb" & i).ColumnWidths...

patricktoulon

XLDnaute Barbatruc
re
bonsoir Germaine
tu n'est pas obligé de bricoler avec index
des fois il faut rester simple

les lignes avec "Référence" n'y seront pas

j'ai transformé ton tableau en tableau structuré
et donc supprimé les lignes vides dans la feuille
elles s'ajoute toute seule si tu ajoute des données
VB:
Sub comboref()
    Dim i&, t, t2()
    t = Range("Tableau1")
    For i = 1 To UBound(t)
        If LCase(t(i, 4)) <> "référence" Then
            a = a + 1: ReDim Preserve t2(1 To 3, 1 To a): t2(1, a) = t(i, 2): t2(2, a) = t(i, 3): t2(3, a) = t(i, 4)
        End If
    Next
    For i = 1 To 5
        Me.Controls("ComboBoxAb" & i).ColumnCount = 3
        Me.Controls("ComboBoxAb" & i).Column = t2
        Me.Controls("ComboBoxAb" & i).ColumnWidths = "40;180;110"
    Next i
End Sub
 

Pièces jointes

  • Classeur1(3).xlsm
    26.5 KB · Affichages: 3

Claudinedu13

XLDnaute Nouveau
re
bonsoir Germaine
tu n'est pas obligé de bricoler avec index
des fois il faut rester simple

les lignes avec "Référence" n'y seront pas

j'ai transformé ton tableau en tableau structuré
et donc supprimé les lignes vides dans la feuille
elles s'ajoute toute seule si tu ajoute des données
VB:
Sub comboref()
    Dim i&, t, t2()
    t = Range("Tableau1")
    For i = 1 To UBound(t)
        If LCase(t(i, 4)) <> "référence" Then
            a = a + 1: ReDim Preserve t2(1 To 3, 1 To a): t2(1, a) = t(i, 2): t2(2, a) = t(i, 3): t2(3, a) = t(i, 4)
        End If
    Next
    For i = 1 To 5
        Me.Controls("ComboBoxAb" & i).ColumnCount = 3
        Me.Controls("ComboBoxAb" & i).Column = t2
        Me.Controls("ComboBoxAb" & i).ColumnWidths = "40;180;110"
    Next i
End Sub
Coucou Raymond ,
Dans le mille pour le prénom , germaine c'est mon deuxième prénom 🤣
Comme tu dis , c'est du bricolage que je fais , merci de m'apporter ton aide , ce qui me permet d'apprendre beaucoup de choses
@ +
👍
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin