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

Alimentation combobox2 en fonction de la valeur de la combobox1

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 !

rudymagny

XLDnaute Occasionnel
Bonjour le forum,
Voilà mon souci, j'ai une combobox1 avec le nom d'un équipement. Je voudrais que dans la combobox2, apparaissent les numéros de séries associés aux nom d'équipement.
Je ne sais pas si je suis bien clair mais j'ai fais un fichier en exemple.

Merci d'avance à vous
 
Re : Alimentation combobox2 en fonction de la valeur de la combobox1

Bonjour,

Voir PJ

Code:
Private Sub OptEquipement_Click()
   Set f = Sheets("feuil1")
   Set MonDico = CreateObject("Scripting.Dictionary")
   For Each c In Range(f.[A2], f.[A65000].End(xlUp)): MonDico.Item(c.Value) = c.Value:  Next c
   temp = MonDico.items
   Call Tri(temp, LBound(temp), UBound(temp))
   Me.ComboBox1.List = temp
End Sub

Private Sub ComboBox1_Change()
 Set f = Sheets("feuil1")
 Me.ComboBox2.Clear
 For Each c In Range(f.[A2], f.[A65000].End(xlUp))
  If c = Me.ComboBox1 Then Me.ComboBox2.AddItem c.Offset(, 1)
 Next c
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

Cette méthode de tri est lente:
1/ Algorithme lent (temps=nxn)
2/ Le tri dans un tableau est + rapide

Code:
   'Tri le contenu de la ComboBox1 par ordre alphabétique
    With ComboBox1
        For i = 0 To .ListCount - 1
            For j = 0 To .ListCount - 1
                If .List(i) < .List(j) Then
                    strTemp = .List(i)
                    .List(i) = .List(j)
                    .List(j) = strTemp
                End If
            Next j
        Next i
    End With

JB
Formation Excel VBA JB
 
Dernière édition:
Re : Alimentation combobox2 en fonction de la valeur de la combobox1

Bonjour BOISGONTIER et merci pour la réponse.
ça marche nickel et j'ai vu une autre façon d'effectuer un tri alphabétique -> intéressant je ne connaissais pas l'utilisation du dictionnaire.

Merci beaucoup à bientôt
 
- 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
10
Affichages
379
  • Question Question
Microsoft 365 Fonction si
Réponses
7
Affichages
223
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…