Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

RowSource (UserForm) sans les doublons

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

richert90

XLDnaute Occasionnel
Bonjour à tous,

Dans le fichier que je vous joints, j'utilise un userForm avec une liste qui prend l'ensemble des valeurs d'une colonne d'Excel . Le problème c'est que cette dernière admet énormément de doublons et je voudrais savoir comment faire en VBA pour que dans le UserForm n'apparaissent qu'une fois les champs donc enlever les doublons.

Dans le fichier joint: je commence par voir ou se situe la dernière ligne puis je renomme la plage A2:A & dernièreligne avec un nom en dur, ici "Liste avec doublons" donc je voudrais avoir dans la liste du UserForm la plage mais sans les doublons.

Merci d'avance
 

Pièces jointes

Re : RowSource (UserForm) sans les doublons

Bonjour,
Merci pour la réponse, j'avais déjà cherché sur internet et j'étais tombé sur ce lien mais j'avais pas réussi à l'adapter. Est-ce que vous pouvez me dire si là c'est bon? (Ca à l'air de marcher mais on ne sait jamais..)😛

Code:
Call nb_lignes 'Nombres de données avec i comme variable globale
    
    Filtre.zl_article.Clear 'Nettoyage
    For Each c In Range("E2:E" & i)
        If c.Value <> "" Then
            Filtre.zl_article.Text = c.Value
            If Filtre.zl_article.ListIndex = -1 Then Filtre.zl_article.AddItem c.Value
        End If
  Next c
  Filtre.zl_article.ListIndex = -1

Voila, alors ??
 
Re : RowSource (UserForm) sans les doublons

Bonjour.

Un essai avec un dictionnaire arborescent.


Remarque: on peut aussi utiliser votre nom de plage :
VB:
Option Explicit

Private Sub UserForm_Initialize()
Me.zl_article.List = DictionnArbo(
[Liste_avec_doublons]).Keys
End Sub
Pour qu'il s'ajuste aux lignes utilisées :
VB:
Sub Macro1()
Dim Plage As Range
Set Plage = Feuil1.Range(Feuil1.[A2], Feuil1.Cells(Feuil1.Rows.Count, "A").End(xlUp))
Plage.Name = "Liste_avec_doublons"
End Sub
 

Pièces jointes

Dernière édition:
Re : RowSource (UserForm) sans les doublons

Bonjour Dranreb

Etant donné que je vais utilisé ce code dans un fichier où il y a dejà pas mal de modules, je ne pense pas utiliser le concept que j'ai vu sur le fichier que tu m'a joint (enormément de code 😱).
Mais je voulais juste savoir si ce que j'avais proposé marche dans tous les cas.

Concernant l'exemple avec le nom de plage, j'étais au départ parti sur ça en effet
 
Re : RowSource (UserForm) sans les doublons

C'est vous qui voyez. Les dictionnaires arborescent peuvent simplifier beaucoup de choses par la suite.
Les modules ne sont pas si énormes que ça, probablement bien plus petits que la plupart des modules de services fournis, dont le code est inaccessible, et leur interaction avec le reste de la programmation se fait simplement.
 
Re : RowSource (UserForm) sans les doublons

Ok Merci pour ta réponse.
Un dernière chose sur les UserForm
J'ai 1 champ avec une date (DTPicker) (que l'utilisateur est donc libre de choisir) auxquels j'ai rajouter un chekbox qui fait que ça s'active que quand l'utilisateur a cliquer dans la case. Mais j'aimerais tester si la la zone ou il y a la date a été "checké" par l'utilisateur . J'ai fait ça mais ça ne marche pas:

Code:
If Filtre.date_deb Is Null Then
    MsgBox "vide"
Else: MsgBox "non vide"
End If

Merci d'avance
 
Re : RowSource (UserForm) sans les doublons

Erreur sur le nom du contrôle, et aussi l'opérateur Is qui ne convient pas. Utiliser des fonctions pour ce genre de comparaisons :
VB:
If IsNull(Me.date_deb.Value) Then
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 Doublons
Réponses
7
Affichages
272
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…