Liste déroulante en ordre alphabétique

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 !

Cydor007

XLDnaute Occasionnel
Bonjour,

J'ai besoin d'un petit coup de main. J'ai essaie de coder dans un combox une liste déroulante.

Cela fonctionne bien. Voici le code:

Private Sub ComboBox1_Change()

End Sub

Private Sub CommandButton1_Click() 'Validation du choix
Range("D7").Value = ComboBox1
Vendor_list.Hide
End Sub

Private Sub Userform_Initialize() 'à l'initialisatiopn de l'Userform
With Sheets("Générateur") 'prend en compte l'onglet "Générateur"
Me.ComboBox1.List = .Range("A2:A" & .Range("A100").End(xlUp).Row).Value 'remplissage de la ComboBox "Vendor"
End With
End Sub

Private Sub CommandButton2_Click()
Vendor_list.Hide
End Sub

Je veux l'améliorer selon les conditions suivantes:

1-Mettre la liste déroulante en ordre alphabétique, sans 0 et sans case vide.
2- La liste se met à jour automatique si j'ajoute un autre # de vendor (en A13).
3- Peut importe le changement, la liste est mise à jour pour que l'utilisateur puisse voir la liste à jour.
4- Supprimer les doublons, s'il y en a dans la liste qui est mise à jour. Possibilité du même vendor pour 2 numéros de modèles.

Copy & paste pour la liste des modèles.

Private Sub ComboBox1_Change()

End Sub

Private Sub CommandButton2_Click() 'Validation du choix
Range("D8).Value = ComboBox2
Model.Hide
End Sub

Private Sub Userform_Initialize() 'à l'initialisatiopn de l'Userform
With Sheets("Générateur") 'prend en compte l'onglet "Générateur"
Me.ComboBox2.List = .Range("B2:B" & .Range("B1000").End(xlUp).Row).Value 'remplissage de la ComboBox "Vendor"
End With
End Sub

Private Sub CommandButton2_Click()
Model.Hide
End Sub

Je suis bloqué. Je laisse un fichier pour bien comprendre.🙂

Merci

Cydor
 

Pièces jointes

Re : Liste déroulante en ordre alphabétique

Bonsoir,

Voir PJ

Code:
Private Sub ComboBox1_Change()
  [D2] = ComboBox1
End Sub

Private Sub ComboBox1_DropButtonClick()
  Dim temp()
  Set f = Sheets("Générateur")
  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

JB
 

Pièces jointes

Dernière édition:
Re : Liste déroulante en ordre alphabétique

Salut,

Merci pour la réponse aussi rapide.

Je vais faire des test, mais cela semble très bon. je vais l'adapter à mon formulaire et voir ce que ca donne.

je te reviens la dessus si j'ai un problème.

Merci beaucoup JB.
 
- 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

  • Question Question
XL 2021 listbox
Réponses
18
Affichages
285
Réponses
10
Affichages
281
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
3
Affichages
665
Retour