Création d'un ListBox avec un dictionnaire

Salut

J'alimente une ListBox avec un dictionnaire avec ce code

Set Onglet = Sheets("Types matériel")
Set MonDico = CreateObject("Scripting.Dictionary")
a = Onglet.Range(Sheets("Types matériel").Cells(2, vbColonne_TypeMatériel_Type_matériel), Sheets("Types matériel").Cells(Application.CountA(Sheets("Types matériel").Columns(vbColonne_TypeMatériel_Type_matériel)), vbColonne_TypeMatériel_Type_matériel))
For i = LBound(a) To UBound(a)
    MonDico(a(i, 1)) = ""
Next i
Me.Controls("ComboBox" & VbColonne_SBCN_Applicabilité_Type).List = MonDico.keys
TypeMatériel.List = MonDico.keys

Pour d'autres ListBox ou ComboBox j'aurais besoin de ne transférer que les lignes qui répondent à un critère extérieur, la valeur d'une des cellules de la ligne dans mon cas ?

Pour l'instant j'utilise une boucle qui me passe toutes les lignes en revues et qui ne transfère que celles qui répondent au critère avec un AddItem, mais la taille des tableaux étant amenée à grossir le temps de traitement va finir par poser un problème.

Merci d'avance.

Manu

Bonjour,

plutôt que de tester chaque ligne et d'insérer celles retenues avec un Additem, il est peut-être (??) avantageux de tester chaque ligne et de ne constituer le dictionnaire qu'avec les lignes retenues ?

Pour plus d'aide, fournir les éléments à comparer...

A+

Oui c'est ce que je veux faire, mais je ne sais pas comment m'y prendre.

Manu

sans plus de précisions sur les éléments à comparer, essayer un truc comme ceci :

For i = LBound(a) To UBound(a)
    If a(i, 1)= élémentdecomparaison Then MonDico(a(i, 1)) = "" 'on insère dans le dico seulement si...
Next i

à adapter

Bah c'était tout con en fait. Ca marche.

Merci.

Manu

Rechercher des sujets similaires à "creation listbox dictionnaire"