ListBox à 2 colonnes sans doublons
R
Bonjour à tous,
J'ai réalisé une listbox qui apparait en cliquant sur un bouton et qui s'initialise à partir des colonnes G et H extensibles d'un autre onglet. Le problème est que les données restituées par la Listbox sont dans la même colonne...
Private Sub UserForm_Initialize()
Dim Cell As Range
Dim Unique As New Collection
Dim Valeur As Range
Dim I As Integer
With Me.ListBox1
.ColumnCount = 2
.ColumnWidths = "50;80"
'Récupère la derniere ligne non vide dans la colonne G
I = Worksheets("Document Unique").Range("G65536").End(xlUp)
On Error Resume Next
'Boucle sur les cellules de la colonne G et H
For Each Cell In Worksheets("Document Unique").Range("G4:H" & I)
'Stocke les données dans une collection
'Filtrage des doublons
Unique.Add Cell, CStr(Cell)
Next Cell
On Error GoTo 0
'Boucle sur le contenu de la collection pour alimenter la ListBox
For Each Valeur In Unique
Me.ListBox1.AddItem Valeur
Next Valeur
End With
End SubPouvez-vous m'indiquer la solution pour que les 2 colonnes de la listbox soient complétées. Si nécessaire je peux fournir un fichier?
Bonne journée
t
Bonjour,
essaye ce code :
UserForm_Initialize()
Dim DerCell As Long, I As Long, J As Long
Dim Ws As Worksheet
Set Ws = Sheets("Document Unique")
With Me.ListBox1
.ColumnCount = 2
.ColumnWidths = "50;80"
'Récupère la derniere ligne non vide dans la colonne G
DerCell = Ws.Range("G65536").End(xlUp).Row
'Boucle sur les cellules de la colonne G
For I = 1 To DerCell
For J = 0 To .ListCount - 1
's'il y a doublon passe a la ligne suivante
If .List(J, 0) = Ws.Range("G" & I) Then Exit For
Next J
If J > .ListCount - 1 Then
'ajoute dans ListBox1 colonne 1
.AddItem Ws.Range("G" & I)
'ajoute dans ListBox1 colonne 2
.List(.ListCount - 1, 1) = Ws.Cells(I, 8)
End If
Next I
End With
End SubA+
R
Bonjour,
Merci, c'est parfait !
Je me rends compte de la différence entre les tutos et un cas concret à adapter... pas facile pour un débutant.
Bonne journée