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 ?
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.
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........
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
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