patricktoulon
XLDnaute Barbatruc
Bonjour  à tous
le sujet reviens souvent
a savoir remplir une combobox ou listbox sans doublons
je vous propose ma méthode (je l'ai déjà donné sur le forum plusieurs fois )
cette méthode consiste a tester l'index que donne match dans une simple boucle sur l'array
exemple 1:
remplir une (combobox ou listbox) avec un array en base zero
	
	
	
	
	
		
--------------------------------------------------------------------
exemple 2:
remplir une (combobox ou listbox) avec une plage (1 ou plusieurs colonnes) en supprimant les doublons dans une colonne precise
dans cet exemple je supprime les doublons dans la colonne 1( index 0 de la combobox ou listbox)
pour cela j'utilise un array issu du tableau avec application.index pour l'utilisation de match
	
	
	
	
	
		
voila des codes tout simple valables aussi pour MAC et sans  librairie externes
Bonne utilisation 😉
	
		
			
		
		
	
				
			le sujet reviens souvent
a savoir remplir une combobox ou listbox sans doublons
je vous propose ma méthode (je l'ai déjà donné sur le forum plusieurs fois )
cette méthode consiste a tester l'index que donne match dans une simple boucle sur l'array
exemple 1:
remplir une (combobox ou listbox) avec un array en base zero
		VB:
	
	
	Private Sub UserForm_Activate()
    Dim T
    T = Array("toto", "titi", "riri", "fifi", "loulou", "machin", "toto", "truc", "bidule", "titi", "robert", "riri", "fifi", "paul", "loulou")
    ListUniqueWithArray T, ComboBox1
End Sub
Sub ListUniqueWithArray(T, ObjList)
    Dim z&, I&, X&
    If LBound(T) = 0 Then z = 1
    For I = LBound(T) To UBound(T)
        X = Application.Match(T(I), T, 0) - z: If X = I Then ObjList.AddItem T(I)
    Next
End Sub
	exemple 2:
remplir une (combobox ou listbox) avec une plage (1 ou plusieurs colonnes) en supprimant les doublons dans une colonne precise
dans cet exemple je supprime les doublons dans la colonne 1( index 0 de la combobox ou listbox)
pour cela j'utilise un array issu du tableau avec application.index pour l'utilisation de match
		VB:
	
	
	Private Sub UserForm_Activate()
    Dim T
    T = Feuil1.Range([A1], Feuil1.[B65000].End(xlUp)).Value
    ComboBox1.ColumnCount = UBound(T, 2)
    ListUniquebyCol T, ComboBox1, 1
End Sub
Sub ListUniquebyCol(T, ObjList, Optional colonne As Long = 1)
    Dim Tx, I&, X&, Z&
    Tx = Application.Transpose(Application.Index(T, 0, colonne))
    If LBound(T) = 0 Then Z = 1
    For I = LBound(Tx) To UBound(Tx)
        X = Application.Match(Tx(I), Tx, 0) - Z
        If X = I Then
            ObjList.AddItem "": For c = LBound(T, 2) To UBound(T, 2): ObjList.List(ObjList.ListCount - 1, c - 1) = T(I, c): Next
        End If
    Next
End Sub
	Bonne utilisation 😉
			
				Dernière édition: