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

XL 2019 Trier 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 !

Electronull

XLDnaute Junior
Salut à tous,

Voilà mon problème, j'ai essayé avec ChatGPT, mais j'ai un petit problème.
Dans ma combobox, j'ai 2 col, nom produits et prix, je voudrais qu'à chaque lettre tapée, il trie automatiquement la liste des produits.
Avec ChatGPT ça fonctionne mais je n'ai plus le prix disponible.

Comment feriez-vous pour trier la list.

Merci
 
Merci pour ton lien sur la recherche, mais ça je sais faire et je n'ai pas besoin d'aide pour le faire.
Si c'est pour passer des heures à relire tous les posts qui des fois ne mène à rien, c'est pas la peine.
Si je demande de l'aide, c'est pour avoir un semblant de lien qui sont sur le sujet qui est correct.
Merci
 
@dysorthographie
Oui, c'est bien ce que je fais, mais à chaque fois, il remodifie les functions, les procédures, pour avoir au final un tas d'erreurs, je tourne en rond avec Chat.
Quand je lui signale une erreur c'est ah oui, tu as raison bla bla bla
Cela fait 3 jours et au final pas de résultat concluant.
 
Mosieur veut du tout cuit 🙄

Alors Mosieur devrait déposer son fichier au lieu de bavarder... il gagnerait du temp 🤭🤣

Allez hop
 
Voici le code de Chat

VB:
' Déclarer en haut du UserForm
Private allProducts() As Variant  ' tous les produits et prix

' --- À appeler lors de l'initialisation du UserForm ---
Private Sub UserForm_Initialize()
    Dim ws As Worksheet
    Dim tbl As ListObject
    Dim arr As Variant
    
    ' Référence à la feuille et au tableau
    Set ws = Workbooks("Donnees_Liste_Produits.xlsx").Sheets("Liste des services et produits")
    Set tbl = ws.ListObjects("T_Produits")
    
    ' Charger le tableau en mémoire
    arr = tbl.DataBodyRange.Value
    allProducts = arr
    
    ' Initialiser ComboBox avec tous les produits
    Me.ComboBox_Produit.List = arr
End Sub

' --- Filtrage rapide à la frappe ---
Private Sub ComboBox_Produit_Change()
    Dim txt As String
    txt = Me.ComboBox_Produit.Text
    
    Dim arrFiltered() As Variant
    Dim count As Long
    Dim i As Long
    
    ' Compter les correspondances pour dimensionner le tableau
    count = 0
    For i = 1 To UBound(allProducts, 1)
        If LCase(Left(allProducts(i, 1), Len(txt))) = LCase(txt) Then
            count = count + 1
        End If
    Next i
    
    If count = 0 Then Exit Sub
    
    ReDim arrFiltered(1 To count, 1 To 2)
    
    count = 0
    For i = 1 To UBound(allProducts, 1)
        If LCase(Left(allProducts(i, 1), Len(txt))) = LCase(txt) Then
            count = count + 1
            arrFiltered(count, 1) = allProducts(i, 1)
            arrFiltered(count, 2) = allProducts(i, 2)
        End If
    Next i
    
    ' Désactiver events pour éviter boucles infinies
    Application.EnableEvents = False
    
    ' Remplir ComboBox en une seule fois
    Me.ComboBox_Produit.List = arrFiltered
    Me.ComboBox_Produit.Text = txt
    Me.ComboBox_Produit.SelStart = Len(txt)
    
    ' Afficher le prix si correspondance exacte
    For i = 0 To Me.ComboBox_Produit.ListCount - 1
        If LCase(Me.ComboBox_Produit.List(i, 0)) = LCase(txt) Then
            Me.TextBox_Prix_Unit.Value = Format(Me.ComboBox_Produit.List(i, 1), "0.00 €")
            Exit For
        End If
    Next i
    
    Application.EnableEvents = True
End Sub
 
Quand on a des centaines d'articles, c'est plus facile que la combobox affiche seulement les articles commençant par les lettres tapées au fur et à mesure.
Certes, mais ce n'est pas un tri qui pourra réaliser ça. 😉
Je crois que généralement on met une TextBox et qu'on filtre à chaque saisie dans ladite TextBox en fonction de son contenu.


Je crois que j'ai enfin trouvé un code, il faut que j'adapte pour mon cas
Tout est bien qui fini bien. 👍
 
Dernière édition:
Voici ce que j'ai trouvé
Le tri fonctionne très bien
Mon problème :1/ Mon tableau se trouve sur un autre classeur
2/ J'ai deux colonnes dans la combobox, 1° nom_Produits, 2° Prix_Produit
et là, ça ne fonctionne pas, j'ai une erreur quand je veux récupérer le prix, Impossible de lire la propriété Comumn, mais pour la Colonne 1 ça fonctionne
 
Bonsoir l'équipe
Dans ma combobox, j'ai 2 col, nom produits et prix, je voudrais qu'à chaque lettre tapée, il trie automatiquement la liste des produits.
Ce qui revient à filtrer et non pas trier.
Tu trouveras beaucoup d'exemple sur le forum.
D'autant plus que tu ne fournis pas de fichier anonymisé représentatif de ton problème.

Bonne soirée.
 
- 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
5
Affichages
176
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…