Plage source d'un combobox sous condition

Bonjour à toutes et à tous,

Après plusieurs essais infructueux, je m'adresse à vous afin d'y voir un peu plus clair

Je souhaiterais pouvoir alimenter le combobox "CBOX_PROD" avec les valeurs de la colonnes F (CODE_SUITE) mais sous les conditions suivantes :

  • > uniquement si la valeur en P=9999
  • > avec saisie intuitive (premiers caractères tapés)
  • > le tout trié numériquement

A noter que la base de données originale fait plus de 50.000 lignes.

Merci d'avance pour votre aide si précieuse.

Bonne journée

8test.xlsm (41.84 Ko)

Bonjour,

-> uniquement si la valeur en P=9999

tu déclares un second tableau et tu compares dans la boucle :

Sub remplir_CBOX_PROD()

    Dim f As Worksheet
    Dim tablo()
    Dim j As Integer
    Dim a As Variant
    Dim b As Variant
    Dim Lig As Long
    Dim n As Range

    Me.CBOX_PROD.Clear

    Set f = Sheets("BD")
    Set mondico = CreateObject("Scripting.Dictionary")

        Lig = f.Cells(Rows.Count, 6).End(xlUp).Row
        a = f.Range("F2:F" & Lig)
        b = f.Range("P2:P" & Lig)

        For I = 1 To UBound(a)

          If a(I, 1) <> "" And b(I, 1) = 9999 Then mondico(a(I, 1)) = ""

        Next I

        temp = mondico.keys

        Call Tri(temp, LBound(temp), UBound(temp))

        Me.CBOX_PROD.List = temp

    Set f = Nothing
    Set mondico = Nothing

End Sub

-> avec saisie intuitive (premiers caractères tapés)

Voir la propriété "MatchEntry" mais comme les code sont très approchant pas sûr que ça fonctionne bien !

-> le tout trié numériquement

Tu as déjà une procédure de tri ?

Bonjour à tous

Un essai à tester. Sans la saisie intuitive.

Bye !

9test-v1.xlsm (33.79 Ko)

Merci à tous les 2 pour votre code qui tourne parfaitement

Par contre, la saisie intuitive ne fonctionne pas

Re,

C'est pour cette raison que j'ai dis :

Voir la propriété "MatchEntry" mais comme les code sont très approchant pas sûr que ça fonctionne bien !

Bonjour,

Généralement, on cite l'origine du code.

Exemple qui fonctionne:

Dim choix()
Private Sub UserForm_Initialize()
   temp = [tableau].Columns(6).Value
   Condition = [tableau].Columns(16).Value
   For i = 1 To UBound(temp)
     If Condition(i, 1) = 2018 Then n = n + 1: ReDim Preserve choix(1 To n): choix(n) = temp(i, 1)
   Next i
   Me.ComboBox1.List = choix
End Sub

Private Sub ComboBox1_Change()
 If Me.ComboBox1 <> "" Then
   clé = Me.ComboBox1 & "*"
   Set d = CreateObject("scripting.dictionary")
   For i = 1 To UBound(choix)
     If choix(i) Like clé Then d(choix(i)) = ""   
   Next i
   If d.Count > 0 Then
      temp = d.keys
      '  ajouter un tri
      Me.ComboBox1.List = temp
      Me.ComboBox1.DropDown
   End If
 End If
End Sub

Private Sub ComboBox1_Click()
  MsgBox Me.ComboBox1
End Sub

Ceuzin

9testjb.zip (28.96 Ko)

Merci à Ceuzin et à boisgontierjacques.

Après une petite adaptation du code, le formulaire tourne à merveille

Excellente journée

Rechercher des sujets similaires à "plage source combobox condition"