[VBA] - Listes sans doublons

Bonsoir,

Pour gérer mes données, j'ai créé un UserForm qui me permet de réaliser des modifications sur toutes les données qui m'intéresse à l'échelle de l'ensemble de ma base de données.

Les modifications fonctionne bien, en revanche, les ListBoxes ne fonctionnent pas comme je l’espérais.

Dans l'UserForm6 ; onglets "Enjeux" il y a deux sous-onglets avec des "ListBox" j'arrive à faire en sorte de les remplir avec les infos que je souhaites, mais ces infos apparaissent en double. Et il y a, par ailleurs, un trèèèès grand nombre de lignes vide qui suivent et qui ne servent à rien. Je pense que ce problème vient du dimensionnement de la ListBox, mais je ne sais pas comment y remédier.

Je joins un document pour que vous ayez un meilleur aperçu de mon problème !

Si vous allez donc dans les deux sous-onglets de l'onglet "Enjeux", il y a :

  • la première ListBox qui présente mon problème, à savoir des espèces qui sont répétées plusieurs fois.
  • la seconde ListBox qui est une tentative de résolution du problème par moi-même, sans succès...

Si vous savez également comment classer les données dans l'ordre dans la ListBox de l'UserForm7, je suis preneur !

Merci de votre attention, bonne soirée !

A plus tard

17listes-et-modifs.xlsm (730.52 Ko)

Bonjour,

Est-ce que tu as fait tes recherches ici :

http://boisgontierjacques.free.fr/pages_site/Doublons.htm

Bonsoir,

Oui, mais les procédure qui sont présentées ne ressemblent pas à ce que j'utilise dans mon document.

Bonsoir,

Problème résolu, je me suis inspiré de ce qui avait déjà été fait sur le forum.

Je faisais une faute dans la délimitation de mon tableau ce qui engendrait des erreurs.

Le code fonctionnel :

Public Sub AlimListbox2()
Dim tb() As String
Dim o%

    Set dc = Worksheets("Données Collector")
    cr = dc.Range("F1").CurrentRegion
    Set z = CreateObject("Scripting.Dictionary")

ListBox2.Clear
Set d = CreateObject("Scripting.Dictionary")      'définit le dictionnaire D
    For i = 2 To UBound(cr, 1) - 1
            If cr(i, 6) = cr(i + 1, 6) And cr(i, 8) <> cr(i + 1, 8) Then
            o = o + 1
            d(cr(i, 6)) = ""
            End If
    Next i
        Me.ListBox2.List = d.keys 'tb()
        Me.ListBox2.MultiSelect = fmMultiSelectMulti
enjeu = Array("Très fort", "Fort", "Modéré", "Faible", "Très faible")
        ComboBox2.List = enjeu
End Sub

Bonne soirée !

Bravo à toi, c'est un sujet récurrent, c'est bien d'avoir trouvé tout seul une réponse.

Rechercher des sujets similaires à "vba listes doublons"