Liste déroulante en ordre alphabétique

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

  • Liste spéciale.zip
    47.7 KB · Affichages: 49

BOISGONTIER

XLDnaute Barbatruc
Repose en paix
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

  • Copie de Liste spéciale.zip
    29.5 KB · Affichages: 91
Dernière édition:

Cydor007

XLDnaute Occasionnel
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.
 

Discussions similaires

Statistiques des forums

Discussions
312 344
Messages
2 087 444
Membres
103 546
dernier inscrit
mohamed tano