Dans cet article, nous allons créer une zone de liste dans le formulaire utilisateur et la charger avec des valeurs après avoir supprimé les valeurs en double.

Les données brutes que nous insérerons dans la zone de liste sont constituées de noms. Ces données brutes contiennent de la duplicité dans les noms définis.

ArrowRawData

Dans cet exemple, nous avons créé un formulaire utilisateur composé de List Box.

Cette zone de liste affichera les noms uniques des exemples de données. Pour activer le formulaire utilisateur, cliquez sur le bouton Soumettre.

ArrowDisplayingUserform

Ce formulaire utilisateur renverra le nom sélectionné par l’utilisateur comme sortie dans une boîte de message.

ArrowDisplayingOutput

Explication logique

Avant d’ajouter des noms dans la zone de liste, nous avons utilisé un objet de collection pour supprimer les noms en double.

Nous avons effectué les étapes suivantes pour supprimer les entrées en double: -. Ajout de noms de la plage définie dans la feuille Excel à l’objet de collection. Dans l’objet de collection, nous ne pouvons pas insérer de valeurs en double. Ainsi, l’objet Collection génère une erreur en rencontrant des valeurs en double. Pour gérer les erreurs, nous avons utilisé l’instruction d’erreur «On Error Resume Next».

  1. Après avoir préparé la collection, ajoutez tous les éléments de la collection au tableau.

  2. Ensuite, insérez tous les éléments du tableau dans la zone de liste.

Veuillez suivre ci-dessous pour le code

Option Explicit

Sub running()

UserForm1.Show

End Sub

'Add below code in userform

Option Explicit

Private Sub CommandButton1_Click()



Dim var1 As String

Dim i As Integer

'Looping through all the values present in the list box

'Assigning the selected value to variable var1

For i = 0 To ListBox1.ListCount - 1

If ListBox1.Selected(i) Then

var1 = ListBox1.List(i)

Exit For

End If

Next

'Unload the userform.

Unload Me

'Displaying the selected value

MsgBox "You have selected following name in the List Box : " & var1

End Sub

Private Sub UserForm_Initialize()

Dim MyUniqueList As Variant, i As Long

'Calling UniqueItemList function

'Assigning the range as input parameter

MyUniqueList = UniqueItemList(Range("A12:A100"), True)



With Me.ListBox1

'Clearing the List Box content

.Clear



'Adding values in the List Box

For i = 1 To UBound(MyUniqueList)

.AddItem MyUniqueList(i)

Next i



'Selecting the first item

.ListIndex = 0



End With

End Sub

Private Function UniqueItemList(InputRange As Range, _

HorizontalList As Boolean) As Variant

Dim cl As Range, cUnique As New Collection, i As Long

'Declaring a dynamic array

Dim uList() As Variant

'Declaring this function as volatile

'Means function will be recalculated whenever calculation occurs in any cell

Application.Volatile

On Error Resume Next

'Adding items to collection

'Only unique item will be inserted

'Inserting duplicate item will through an error

For Each cl In InputRange

If cl.Value <> "" Then

'Adding values in collection

cUnique.Add cl.Value, CStr(cl.Value)

End If

Next cl

'Initializing value return by the function

UniqueItemList = ""

If cUnique.Count > 0 Then

'Resizing the array size

ReDim uList(1 To cUnique.Count)

'Inserting values from collection to array

For i = 1 To cUnique.Count

uList(i) = cUnique(i)

Next i



UniqueItemList = uList



'Checking the value of HorizontalList

'If value is true then transposing value of UniqueItemList

If Not HorizontalList Then

UniqueItemList = _

Application.WorksheetFunction.Transpose(UniqueItemList)

End If

End If

On Error GoTo 0

End Function

Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.

Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]