Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Remplir une ComboBox

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Webperegrino

XLDnaute Accro
Supporter XLD
Bonsoir Le Forum,

J'ai navigué sur le forum mais je n'ai pas trouvé la réponse que j'attendais.
J'ai à nouveau besoin d'un peu d'aiguillage.
En effet, la ComboBox5Dest permet de transférer une valeur intégrée librement, maiscette ComboBox reste désespérément vide.
Je voudrais qu'elle propose la liste figurant dans une autre feuille des cellules K42 à K120.

J'ai essayé de composer la codification ci-après, la liste souhaitée -si possible ordonnée automatiquement - ne paraît pas.
Merci de me venir en aide.
Webperegrino

Dans UserForm2 :

Private Sub Userform2_Initialize()
Dim cell As Range
ComboBox5Dest.Clear
With Worksheets("Liste des Sites & Paramètres")
ComboBox5Dest.List = .Range("K42:K" & .Range("K120").End(xlUp).Row).Value
ComboBox5Dest.AddItem cell.Offset(0, 0)
End With

Sub tri(a(), gauc, droi) ' Tentative d'ordre alphabétique, merci M. Boisgontier ref = a((gauc + droi) \ 2, 1)
g = gauc: d = droi
Do
Do While a(g, 1) < ref: g = g + 1: Loop
Do While ref < a(d, 1): d = d - 1: Loop
If g <= d Then
temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = 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
End Sub

Private Sub ComboBox5Dest_Change()

End Sub
 
Re : Remplir une ComboBox

Bonsoir Webperegrino, bonsoir le forum,

Peut-être tout simplement comme ça :
Code:
Private Sub Userform2_Initialize()
With Worksheets("Liste des Sites & Paramètres")
    ComboBox5Dest.List = .Range("K42:K120").Value
End With
End Sub
 
Re : Remplir une ComboBox

Bonsoir Le Forum,
Bonsoir Robert et merci pour l'intervention.
J'ai bien essayé votre proposition, mais ... je n'ai pas plus de résultat.
Le déroulant n'apparaît toujours pas en ComboBox5Dest quand j'active mon UserForm2, mais ne bloque pas l'enregistrment dans la base à la validation de l'userform, c'est déjà cela.

Je continue demain mes recherches de mon côté pour trouver cette liste dans le Combo, ça ne fera que trois jours sur ce souci,
Webperegrino


J'ai mis ceci (tout le pourtour avec des '...

Private Sub Userform2_Initialize()
'Dim cell As Range
' ...
'ComboBox5Dest.AddItem cell.Offset(0, 0)

With Worksheets("Liste des Sites & Paramètres")
ComboBox5Dest.List = .Range("K42:K120").Value
End With


'Sub tri(a(), gauc, droi) ' Quick sort
'...
' If gauc < d Then Call tri(a, gauc, d)
'End Sub

End Sub
 
Re : Remplir une ComboBox

Bonjour Wesperegrino, Robert

essaye peut être le code ci dessous avec un combo "tout neuf".... sans avoir modifié les propriétés...

Code:
Private Sub UserForm_Initialize()
With Worksheets("Liste des Sites & Paramètres")
ComboBox1.List = .Range("K42:K120").Value
End With
End Sub

A noter, pour déclencher l'événement "initialize" de l'usf, le code doit être placé dans le module de celui-ci et ne pas faire référence à son nom...

ceci :
Code:
Private Sub [B]UserForm[/B]_Initialize

et non cela :
Code:
Private Sub [B]Userform2[/B]_Initialize

Autre point, dans le 1er code que tu donnais, il y avait 2 procédures d'imbriqées, le "end sub" aurait dû être placé avant la déclaration d'une autre procédure...

bonne journée.
@+
 
Re : Remplir une ComboBox

Bonjour Le Forum,
Pierrot 93,

La rectification proposée fonctionne à merveille !
Tout le reste fontionne également par la suite (mise en place dans la base de données).

Il ne me reste plus qu'à trouver le bon emplacement de la procédure de tri automatique de la liste ComboBox5, pas nécessaire ... mais utile.
En effet jusqu'ici, dans "Liste des Sites & Paramètres", je trie par ordre croissant le contenu du bloc K42:K120 et le tour est joué, "à l'ancienne".

Merci, merci encore pour votre disponibilité,

Webperegrino

Correction :

Private Sub Userform_Initialize()
With Worksheets("Liste des Sites & Paramètres")
ComboBox5.List = .Range("K42:K120").Value
End With

End Sub

'... avec mise en sommeil le tri dans "K42:K120").
'Dim cell As Range
'ComboBox5Dest.Clear
'With Worksheets("Liste des Sites & Paramètres")
'ComboBox5Dest.List = .Range("K42:K" & .Range("K120").End(xlUp).Row).Value
'ComboBox5Dest.AddItem cell.Offset(0, 0)


'Sub tri(a(), gauc, droi) ' Quick sort
' ref = a((gauc + droi) \ 2, 1)
' g = gauc: d = droi
' Do
' Do While a(g, 1) < ref: g = g + 1: Loop
' Do While ref < a(d, 1): d = d - 1: Loop
' If g <= d Then
' temp = a(g, 1): a(g, 1) = a(d, 1): a(d, 1) = 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
 
Re : Remplir une ComboBox

Re,

pour trier ta liste, essaye en modifiant comme suit :

Code:
Private Sub UserForm_Initialize()
Dim i As Byte, j As Byte, temp As String
With ComboBox1
    .List = Worksheets("Liste des Sites & Paramètres").Range("K42:K120").Value
    For i = 0 To .ListCount - 2
        For j = i + 1 To .ListCount - 1
            If .List(i) > .List(j) Then
                temp = .List(i)
                .List(i) = .List(j)
                .List(j) = temp
            End If
        Next j
    Next i
End With
End Sub

@+

Edition : remplacé le 1er "For i = 0 To .ListCount - 1" par "For i = 0 To .ListCount - 2"
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
660
Réponses
4
Affichages
657
Réponses
1
Affichages
323
Réponses
7
Affichages
366
Réponses
5
Affichages
573
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…