Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Alimenter combobox dans userform

4 réponses
Avatar
Dominique
Bonjour
Je voudrais alimenter le combobox ChoixNom se trouvant dans un userform
(ModificationDistribution) par la liste des nom se trouvant dans la
feuille "Distribution" de D2 à la dernière ligne pleine et si possible
trier par ordre alphabétique.
merci
Pour l instant voila ce que j ai fait mais rien n apparait

Private Sub ModificationDistribution_Initialize()

Me.ChoixNom.List = Sheets("Distribution").Range([D2], [D65000].End(xlUp))

End Sub

4 réponses

Avatar
MichDenis
Bonjour Dominique,

Un exemple ... il trie les données en ordre croissant !

Tu dois adapter le nom de la feuille de la procédure
où sont tes données et le nom de ton combobox si différent.
'----------------------------------------
Private Sub UserForm_Initialize()
Dim Dict As Object, Tblo As Variant
Dim Rg As Range, C As Range
Set Dict = CreateObject("Scripting.Dictionary")
With Worksheets("Feuil1") 'Nom Feuille à adapter
Set Rg = .Range("D2:D" & .Range("D65536").End(xlUp).Row)
End With
For Each C In Rg
If C <> "" Then
If Not Dict.Exists(C.Value) Then
Dict.Add C.Value, C.Value
End If
End If
Next
Tblo = Dict.items
Call Tri(Tblo, LBound(Tblo), UBound(Tblo))
Me.ComboBox1.List = Tblo
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
'----------------------------------------



"Dominique" a écrit dans le message de groupe de discussion :

Bonjour
Je voudrais alimenter le combobox ChoixNom se trouvant dans un userform
(ModificationDistribution) par la liste des nom se trouvant dans la
feuille "Distribution" de D2 à la dernière ligne pleine et si possible
trier par ordre alphabétique.
merci
Pour l instant voila ce que j ai fait mais rien n apparait

Private Sub ModificationDistribution_Initialize()

Me.ChoixNom.List = Sheets("Distribution").Range([D2], [D65000].End(xlUp))

End Sub
Avatar
LE TROLL
Bonjour,

La méthode du combo est celle de la liste, soit :

Combo1.clear
combo1.AddItem "ajout"_ou_variable

--
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.


"Dominique" a écrit dans le message de
news:
Bonjour
Je voudrais alimenter le combobox ChoixNom se trouvant dans un userform
(ModificationDistribution) par la liste des nom se trouvant dans la
feuille "Distribution" de D2 à la dernière ligne pleine et si possible
trier par ordre alphabétique.
merci
Pour l instant voila ce que j ai fait mais rien n apparait

Private Sub ModificationDistribution_Initialize()

Me.ChoixNom.List = Sheets("Distribution").Range([D2],
[D65000].End(xlUp))

End Sub



Avatar
Dominique
Le 31/07/2009 14:02, Dominique a écrit :
J ai essayé ca :


Private Sub ModificationDistribution_Initialize()
ChoixNom.Clear
ChoixNom.AddItem Worksheets("Distribution").Range("D2:D" &
.Range("D65536").End(xlUp).Row)
End sub

et ca, mais ca ne marche pas erreur de manip certainement mais je ne
vois pas

Private Sub ModificationDistribution_Initialize()
Dim Dict As Object, Tblo As Variant
Dim Rg As Range, C As Range
Set Dict = CreateObject("Scripting.Dictionary")
With Worksheets("Distribution") 'Nom Feuille à adapter
Set Rg = .Range("D2:D" & .Range("D65536").End(xlUp).Row)
End With
For Each C In Rg
If C <> "" Then
If Not Dict.Exists(C.Value) Then
Dict.Add C.Value, C.Value
End If
End If
Next
Tblo = Dict.items
Call Tri(Tblo, LBound(Tblo), UBound(Tblo))
Me.ChoixNom.List = Tblo
End Sub
Avatar
MichDenis
Pour utiliser ceci la méthode AddItem :
'-----------------------------------
Private Sub ModificationDistribution_Initialize()
ChoixNom.Clear
with Worksheets("Distribution")
For each c in .Range("D2:D" & .Range("D65536").End(xlUp).Row)
ChoixNom.AddItem c.value
Next
End With
End sub
'-----------------------------------

Tu pourrais aussi employer ceci :

Private Sub ModificationDistribution_Initialize()
ChoixNom.Clear
with Worksheets("Distribution")
ChoixNom.list = .Range("D2:D" & .Range("D65536").End(xlUp).Row).value
End With
End sub

Il y a aussi :

Private Sub ModificationDistribution_Initialize()
ChoixNom.Clear
with Worksheets("Distribution")
ChoixNom.rowsource =.Name & "!" .Range("D2:D" & _
.Range("D65536")(xlUp).Row).address
End With
End sub