1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| ' // PopulateListBox
' // https://docs.microsoft.com/en-us/office/vba/excel/Concepts/Controls-DialogBoxes-Forms/add-a-unique-list-of-values-to-a-combo-box
' // Ajoute une liste de valeurs unique à un ComboBox ou ListBox d'un Formulaire personnel
Sub PopulateListBox(ByVal ctControl As String, ByVal rnData As Range, Usf As UserForm)
Dim vaData As Variant ' La liste de valeur stockée dans un variant
Dim ncData As New VBA.Collection ' Collection pour stoker les valeurs unique
Dim lnCount As Long ' Compteur utilisé dans la boucle On Error Resume Next loop.
Dim vaItem As Variant ' Elément variant de valeur unique dans la collection ncData
' // Place les valeurs de la plage dans vaData
vaData = rnData.Value
' // Place les valeurs de liste de vaData dans la Collection.
On Error Resume Next
For lnCount = 1 To UBound(vaData)
ncData.Add vaData(lnCount, 1), CStr(vaData(lnCount, 1))
Next lnCount
On Error GoTo 0
' // Efface la zone de liste déroulante (au cas où vous auriez déjà exécuté la macro),
'puis ajoute chaque élément unique de ncData à la zone de liste déroulante.
With Usf.Controls(ctControl)
.Clear
For Each vaItem In ncData
.AddItem ncData(vaItem)
Next vaItem
End With
End Sub |