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

XL 2016 Limiter la Saisie dans un Combobox

aurelio.ewane

XLDnaute Occasionnel
Bonjour jai un combobox qui contient une liste delements
Jaimerais savoir comment limiter la saisie dans mon combobx et n'autoriser que les valeurs qui sy trouvent du genre lorsque je commences a saisir une lettre ca charge dans mon combobox tous les elements de ma liste qui on se mot
une saisie intelligente je veux dire

Merci a tous
 

cp4

XLDnaute Barbatruc
Bonjour,

Un fichier serait le bienvenu. Sinon de la lecture ici
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Il y a aussi une propriété MatchRequired qui, à True, empêche la saisie d'éléments à ajouter. Mais je ne l'utilise guère. Si on prend soin de classer la liste, la saisie d'un début existant la positionne dessus, au début. C'est suffisant à mon avis. J'ai un module MSujetCBx avec principalement une fonction SujetCBx qui renvoie un Array(Clés, Listes), Clés, affectable à un ComboBox.List, est classé et sans doublon, et Listes sont les listes de numéros relatifs de lignes où elles ont été trouvées.

Néanmoins ce même module comporte aussi cette Function qui peut extraire d'un sujet d'origine un autre ne comportant que ce qui est tapé, et permettrait donc de faire ce que vous demandez.
VB:
Function SujCBxLike(ByVal SujOrg, ByVal Masque As String)
   Dim LesClés(), LesListes(), KS As Long, KE As Long
   Masque = UCase(Masque)
   LesClés = SujOrg(0): LesListes = SujOrg(1): KS = -1
   For KE = 0 To UBound(LesClés)
      If UCase(LesClés(KE)) Like Masque Then
         KS = KS + 1: If KS < KE Then LesClés(KS) = LesClés(KE): LesListes(KS) = LesListes(KE)
         End If: Next KE
   If KS < 0 Then Exit Function
   ReDim Preserve LesClés(0 To KS), LesListes(0 To KS)
   SujCBxLike = Array(LesClés, LesListes)
   End Function
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Lorsqu'un début existant est tapé, le premier de la liste y correspondant est assumé. Si c'est le seul c'est donc le bon. La limitation de la liste à ceux ci, je vous l'ai fait pour vous montrer que c'est possible, mais à mon avis c'est inutile. Mettez en commentaire la Private Sub ComboBox1_KeyPress pour voir.
 

Dranreb

XLDnaute Barbatruc
À mon avis elle ne présente d'intérêt que pour la saisie d'autres caractères que ceux de début car pour ceux ci la réaction normale d'une ComboBox est suffisante, si toutefois la liste est classée.
 

aurelio.ewane

XLDnaute Occasionnel
Qu'est ce que vous ne comprenez pas exactement ?
Merci deja du temps que vous prenez pour me repondre

La première de choses est que je voudrais le faire pour des comBobox qui plusieurs colonnes
Donc jai essayer de modifier la variable
Optional ByVal Colonne As Long = 1 en mettant
Optional ByVal Colonne As Long = 5
dans la fonction SujetCBx
mais hela ca ne donne rien du tout
Merci de maider
 
Réactions: cp4

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…