Alimenter combobox dans userform

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichDenis
Le #19860451
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"
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
LE TROLL
Le #19860441
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" 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



Dominique
Le #19860661
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
MichDenis
Le #19860901
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
Publicité
Poster une réponse
Anonyme