Remplir Combobox MultiColonne

GeoTrouvePas

XLDnaute Impliqué
Bonjour tout le monde,

Je me retrouve embêté avec le chargement de la 2ème colonne d'un Combobox.

Ma macro boucle sur une feuille (DATA_PERIODES) pour constituer une liste de login. Cette liste est chargée dans un dictionnaire pour éviter les doublons. Mon but est de charger cette liste dans la 1ère colonne d'un Combobox et d'associer dans la 2ème colonne le nom et le prénom associé (que je trouve dans DATA_PERSONNEL).

J'arrive à charger directement les clés du dictionnaire dans la 1ère colonne mais je n'arrive pas à charger les items dans la 2ème. J'ai donc essayé de faire une boucle sur la 1ère colonne et de compléter la 2ème mais ça ne fonctionne pas non plus.

Sauriez vous me dire ce qui ne va pas dans mon code ?

Je vous remercie par avance
 

Pièces jointes

  • Test chargement Login.xlsm
    23.7 KB · Affichages: 81

GeoTrouvePas

XLDnaute Impliqué
Bonjour Nicole et merci pour ton exemple. Mon soucis est que je ne peux pas passer par un "ComboBox1.List = Range("maliste3").Value" car mes données ne sont pas directement prises sur des cellules contiguës.

Compte tenu du volume très important et de la présence de doublons, je dois d'abord passer par un dictionnaire.
 

GeoTrouvePas

XLDnaute Impliqué
Bonjour PierreJean

Désolé mon navigateur n'avait pas rechargé la page avant que je réponde. Ma solution était similaire à la tienne mais en moins fluide.

Par contre j'ai un comportement suspect sur mon adaptation. J'ai l'habitude de fonctionner avec un indice minimum de 1 sur mes variables tableau. J'ai beau utiliser un Option Base 1, il semblerait que l'utilisation de "a = mondico.keys" provoque automatiquement un indice minimum de 1........
 

job75

XLDnaute Barbatruc
Bonsoir,
Par contre j'ai un comportement suspect sur mon adaptation. J'ai l'habitude de fonctionner avec un indice minimum de 1 sur mes variables tableau. J'ai beau utiliser un Option Base 1, il semblerait que l'utilisation de "a = mondico.keys" provoque automatiquement un indice minimum de 1........
Il est facile de vérifier que les keys et items d'un Dictionary sont toujours en base 0 :
Code:
Option Base 1 'ne modifie pas la base du Dictionary

Sub test()
Dim d As Object, a, b
Set d = CreateObject("Scripting.Dictionary")
d("xx") = 1
a = d.keys: b = d.items
MsgBox LBound(a)
MsgBox LBound(b)
End Sub
A+
 

GeoTrouvePas

XLDnaute Impliqué
Bonsoir,

Il est facile de vérifier que les keys et items d'un Dictionary sont toujours en base 0 :
Code:
Option Base 1 'ne modifie pas la base du Dictionary

Sub test()
Dim d As Object, a, b
Set d = CreateObject("Scripting.Dictionary")
d("xx") = 1
a = d.keys: b = d.items
MsgBox LBound(a)
MsgBox LBound(b)
End Sub
A+

Bien vu, je n'y avais pas pensé.
Je ne suis pas vraiment familier avec l'objet Dictionnaire.
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 904
Membres
101 834
dernier inscrit
Jeremy06510