XL 2019 Liste déroulante comprenant les lettres de A à E par exemple

thespeedy20

XLDnaute Occasionnel
Bonjour à tous,

J'ai un fichier Archive avec un peu de 32 000 lignes et bien sur un nombre incalculable de doublon dans la liste...

J'aimerais avoir plusieurs liste déroulante sans doublon par exemple :

Des noms commençant par A à E, F à Q, R à U, et de V à Z pour limiter la taille des listes et optimiser la rapidité de la recherche....

La liste de nom est en colonne B

Je joins mon fichier que j'ai limité à 200 noms

Merci d'avance pour votre aide

Oli
 

Pièces jointes

  • test_liste.xlsm
    24.3 KB · Affichages: 22

Rouge

XLDnaute Impliqué
Bonjour,

Voici une proposition, les combobox se remplissant à l'ouverture du fichier ainsi qu'à chaque modification de la liste?

Pour voir les codes, faire ALT + F11, ils sont présents dans le module de la "Feuil1", dans le module "Thisworkook "et dans le module de "UserForm1".

Cdlt
 

Pièces jointes

  • thespeedy20_Liste déroulante comprenant les lettres de A à E par exemple.xlsm
    24.8 KB · Affichages: 8

thespeedy20

XLDnaute Occasionnel
Bonjour Rouge, Chris

Merci pour vos propositions....

@Rouge : cela fonctionne très bien, une petite chose, quand on sélectionne une listbox, est il possible de mettre les autres vides... ? dans le but de n'avoir qu'un choix possible ?

merci d'avance

@chris : je testerai ce soir, car je n'ai que Powerquery à la maison....

OLi
 

job75

XLDnaute Barbatruc
Bonsoir thespeedy20, Rouge, chris,

32000 lignes ce n'est pas beaucoup et à mon avis une seule ComboBox suffit.

Voyez le fichier joint et cette macro dans le code de la 1ère feuille :
Code:
Private Sub ComboBox1_GotFocus()
ComboBox1.Clear 'RAZ
If [D3] = "" Or [E3] = "" Then Exit Sub
Dim derlig&
If FilterMode Then ShowAllData 'si la feuille est filtrée
derlig = Range("B" & Rows.Count).End(xlUp).Row
If derlig = 1 Then Exit Sub
With Sheets("Liste")
    .[A:B].ClearContents
    .[A1].Resize(derlig - 1) = Range("B2:B" & derlig).Value
    .[A:B].Sort .[A1], xlAscending, Header:=xlNo
    .[A1].CurrentRegion.Resize(, 2).RemoveDuplicates 1, Header:=xlNo 'supprime les doublons
    With .[A1].CurrentRegion.Resize(, 2)
        .Columns(2) = "=1/(A1>=""" & [D3] & """)/(A1<=""" & [E3] & "ZZZ" & """)"
        On Error Resume Next 'si aucune SpecialCell
        ComboBox1.List = Intersect(.Columns(2).SpecialCells(xlCellTypeFormulas, 1).EntireRow, .Cells).Value
    End With
End With
End Sub
La liste de la ComboBox est créée dans la 2ème feuille.

Bonne nuit.
 

Pièces jointes

  • test_liste(1).xlsm
    34 KB · Affichages: 6

Rouge

XLDnaute Impliqué
Bonjour à tous,

En réponse à thespeedy20 :
cela fonctionne très bien, une petite chose, quand on sélectionne une listbox, est il possible de mettre les autres vides... ? dans le but de n'avoir qu'un choix possible ?

Voilà la modification.

Cdlt
 

Pièces jointes

  • thespeedy20_Liste déroulante comprenant les lettres de A à E par exemple_1.xlsm
    27 KB · Affichages: 3

thespeedy20

XLDnaute Occasionnel
Bonjour à tous,

@ job75 : sur la feuille liste, il y a toujours des résidus de l'ancienne liste, peut-on les effacer ?
est il possible extraire des lignes(à partir de la colonne B jusqu'à D à partir du ComboBox ? sur la feuille extraction en E15 - F 15 - G15 (source étant la feuille cours). ?

@Rouge : merci beaucoup pour la correction...

Merci encore de votre aide

OLi
 

Pièces jointes

  • test_liste(3).xlsm
    44.4 KB · Affichages: 4

job75

XLDnaute Barbatruc
@ job75 : sur la feuille liste, il y a toujours des résidus de l'ancienne liste, peut-on les effacer ?
Ces "résidus" n'ont pas d'importance puisqu'ils sont effacés en début de macro.

Edit : mais c'est vrai qu'ils alourdissent le fichier, je viens de les effacer une 2ème fois au post #9 :
VB:
    .[A:B].ClearContents 'RAZ pour alléger le fichier
La feuille Liste doit être masquée, elle peut être utilisée pour faire d'autres extractions.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 027
Messages
2 084 762
Membres
102 655
dernier inscrit
STA82700