VBA: Liste déroulante
Résolu/Fermé
TeddyGalere
Messages postés
75
Date d'inscription
vendredi 11 mars 2016
Statut
Membre
Dernière intervention
27 mai 2016
-
21 avril 2016 à 16:19
TeddyGalere - 21 avril 2016 à 16:44
TeddyGalere - 21 avril 2016 à 16:44
A voir également:
- VBA: Liste déroulante
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Vba dépassement de capacité ✓ - Forum Excel
2 réponses
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
Modifié par ccm81 le 21/04/2016 à 16:27
Modifié par ccm81 le 21/04/2016 à 16:27
Bonjour
Ceci dvrait aller
Cdlmnt
Ceci dvrait aller
Private Sub UserForm_Initialize()
Dim Derlig As Byte, Cptr As Byte
With Sheets("recap")
'remplit le combo avec libellés existant
Derlig = .Range("D" & Rows.Count).End(xlUp).Row
For Cptr = 6 To Derlig
If .Cells(Cptr, "D") <> "" Then ComboBox_choix.AddItem .Cells(Cptr, "D")
Next
End With
End Sub
Cdlmnt
Boisgontierjacques
Messages postés
175
Date d'inscription
jeudi 19 septembre 2013
Statut
Membre
Dernière intervention
26 décembre 2018
64
Modifié par Boisgontierjacques le 21/04/2016 à 16:43
Modifié par Boisgontierjacques le 21/04/2016 à 16:43
Bonjour,
Liste sans vides triée
http://boisgontierjacques.free.fr/pages_site/formulairelistetriee.htm#Dictionary
http://boisgontierjacques.free.fr/fichiers/Formulaire/FormListeTrieeVides.xls
Option Compare Text
Private Sub UserForm_Initialize()
Dim temp()
Set f = Sheets("BD")
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("A2:A" & f.[A65000].End(xlUp).Row)
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call tri(temp, LBound(temp), UBound(temp))
Me.ComboBox1.List = temp
End Sub
Sub tri(a(), gauc, droi) ' Quick sort
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
Boisgontier
Liste sans vides triée
http://boisgontierjacques.free.fr/pages_site/formulairelistetriee.htm#Dictionary
http://boisgontierjacques.free.fr/fichiers/Formulaire/FormListeTrieeVides.xls
Option Compare Text
Private Sub UserForm_Initialize()
Dim temp()
Set f = Sheets("BD")
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In f.Range("A2:A" & f.[A65000].End(xlUp).Row)
If c.Value <> "" Then MonDico.Item(c.Value) = c.Value
Next c
temp = MonDico.items
Call tri(temp, LBound(temp), UBound(temp))
Me.ComboBox1.List = temp
End Sub
Sub tri(a(), gauc, droi) ' Quick sort
ref = a((gauc + droi) \ 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub
Boisgontier
21 avril 2016 à 16:44
Merci beaucoup...
Rapide et efficace ;)