Liste déroulante intuitive à partir d'une liste : pb avec les doublons

Bonjour,

J'ai créé un formulaire et une combobox, celle ci permet de sélectionner de façon intuitive un nom parmi une liste en permettant de taper les lettres du nom , la sélection dans la combobox se met à jour en fonction des lettres entrées une à une.

Je rencontre le problème suivant, illustré par cet exemple :

Dans ma liste, je peux avoir plusieurs noms identiques , par exemple DURANT.

en tapant 'dur', la sélection va aussitôt sur le 1er DURANT (Alain) de la liste.

Ensuite je suis bloqué si je cherche à sélectionner 2eme DURANT ( Sophie) de la liste, là je suis obligé d'aller le chercher manuellement via l'ascensseur de la combobox.

Ce n'est pas pratique et ma liste peut attendre 200 noms, d'autant qu'il n'est pas possible de savoir vraiment ou se trouve le second DURANT

Auriez vous une idée, une astuce pour permettre de sélectionner le 2eme ou X ème nom identique d'une liste sans avoir a le chercher manuellement ?

Voici mon fichier exemple.

Merci à vous,

Bonjour lcn

Essaie avec ce fichier. En fait, je trie la liste afin que les doublons soient côte à côte.

Est-ce que cela te va?

Bonne journée

Bonjour LCN, bonjour le forum,

Pour ma part j'utilise dans ce cas deux ComboBoxes. La premières contient les noms sans doublons et affiche dans la seconde le prénom si le nom est unique. Si plusieurs homonymes, la deuxième ne s'alimente qu'avec les prénoms du nom répété....

22test.xlsm (23.12 Ko)

[Édition]

Bonjour Patty nos posts se sont croisés...

Bonjour,

Je viens de tester le code de Patty,

j'aime bien l'idée , mais le tri impacte que les noms, j'aimerai que les colonnes associées à la ligne correspondant au nom soient également en adéquation.

Pour l'instant, les noms sont effectivement triés mais le prénom correspondant au nom ne l'est pas.

Dans la suite de mon code, lorsque je vais sélectionner un nom je vais ensuite traiter une vingtaine de colonnes qui correspondent de la ligne du nom selectionné. (dans cet exemple, il n'y a que 2 colonnes : nom et prénom )

Comment dois je faire pour que le numéro de ligne du nom selectionné soit le bon ?

Actuellement c'est le numéro de ligne du prénom qui est renvoyé, donc tout est décalé.

Cordialement,

Bonjour ThauThème

Que faut il rajouter à votre code pour renvoyer le numéro de la ligne du nom et prénom selectionné ?

Une fois la sélection fait par l'utilisateur, j'ai besoin de connaitre le numéro de la ligne correspondante à ce choix, par exemple : Jean Jean -> ligne 5

Est il aussi possible par le biais d'un bouton d'appeler et afficher dans les combobox le nom et prénom situé en toute dernière ligne de la liste ?

Bonjour le Fil, bonjour le forum,

En pièce jointe la version 2. J'ai pris le temps de commenter les codes pour te permettre de les comprendre et les modifier.

27test-v02.xlsm (23.59 Ko)


Merci à vous pour le code modifié et les explications données,

Les commentaires sont vraiment très utiles pour comprendre le fonctionnement et progresser.

Un grand merci.

J'ai une question complémentaire :

Dans le cas ou les données sont stockés dans un tableau qui débute à partir de A4 avec 1 ligne d'entête,

Logiquement je dois modifier cette ligne comme ceci n'est ce pas ?

TV = O.Range("A4").CurrentRegion 'définit le tableau des valeurs TV

Et pour afficher le bon numéro de la ligne correspondant au choix des combobox, il faut générer un décalage et +4 ?

ligne_début_tableau_source = 3      ' Le tableau source commence à partir de la ligne 4

Actuellement, le numéro de ligne retourné est erroné :

Private Sub CPrenom_Change() 'au changement dans la CListeNomsClients
Dim I As Integer 'déclare la variable I (Incrément)

If Me.CPrenom.Value = "" Then Me.LNumligne.Caption = "" 'si la CPrenom est effacé, efface la LNumligne

For I = 1 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV
    'condition : si la donnée ligne I  colonne 1 de TV est égale à la CListeNomsClients et
    'si la donnée ligne I colonne 2 de TV est égale à la CPrenom,

    If TV(I, 1) = Me.CListeNomsClients.Value And TV(I, 2) = Me.CPrenom.Value Then

        Me.LNumligne.Caption = I + ligne_début_tableau_source                      'définit le texte de la LNumligne
        Exit For 'sort de la boucle

    End If 'fin de la condition

Next I 'prochaine ligne de la boucle

End Sub

Bonjour le fil, bonjour le forum,

Avec un tableau structuré c'est un peu différent... En pièce jointe la version 3 :

22test-v03.xlsm (26.09 Ko)

Merci à vous

Rechercher des sujets similaires à "liste deroulante intuitive partir doublons"