XL 2019 combobox intuitive

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 !

escudo

XLDnaute Nouveau
bonsoir,
j'ai un souci avec mon userform :

Private Sub UserForm_Initialize()
Set f = Sheets("PLATS")
Set Rng = f.Range("A2:R" & f.[a65000].End(xlUp).Row)
BD = Rng.Value
ncol = 11
ListBox1.List = BD
ListBox1.ColumnCount = 18
ListBox1.ColumnWidths = "0;0;0;0;150;80;80;60;40;0;0;0;0;0;0;0;0;0"

Set f3 = Sheets("STOCK")
TblBD2 = Range("AB2:AC" & [a65000].End(xlDown).Row).Value
choix2 = Application.Transpose(f3.Range("AB2:AB" & f3.[AB65000].End(xlUp).Row).Value)
Me.ComboBox1.List = choix2
Call Tri(choix2, LBound(choix2), UBound(choix2))
Me.ComboBox1.List = choix2
End Sub

si la plage AB2:AB contient une seule valeur l'userform renvoie moi incompatibilité de type s'il ya 2 valeurs et plus l'userform s'ouvre correctement.

je veux aussi apres que userform1 s'ouvre correctement le combobox1 soit intuitif si je tape une lettre il cherche tout les mots qui commence par cette lettre.

merci d'avance
 

Pièces jointes

Bonjour,
Déclarez choix2 en variant et pas en tableau, puis faites un test pour savoir si c'est un tableau exemple :
VB:
Dim choix2 As Variant

    If IsArray(choix2) Then
        Tri(choix2, LBound(choix2), UBound(choix2))
        Me.ComboBox1.List = choix2
    Else
        Me.ComboBox1.AddItem Choix2
    End if
Au passage, et entre autres :
  • Trop de variables déclarées en Public
  • La procédure Tri devrait être une fonction
  • Donner des noms explicites aux variables, et aux contrôles.
  • Donner des noms de code explicites aux feuilles, et utilisez-les
 
Bonjour.
je veux aussi apres que userform1 s'ouvre correctement le combobox1 soit intuitif si je tape une lettre il cherche tout les mots qui commence par cette lettre.
Ce n'est pas ça que j'appelle une liste intuitive. Ça, à peu de choses près, c'est le comportement normal d'une ComboBox: La valeur provisoirement assumée commence par le début tapé, et le début de la liste, quand on en demande l'affichage, est positionnée dessus.
Pour moi, intuitif c'est si en plus quand on tape quelque chose, il prépare une liste temporaire contenant cette suite tapée, pas forcément au début. Une procédure classique, pas extrêmement simple mais suffisamment, permet de la construire facilement et de la faire appliquer à mon objet ComboBoxLiées. Mais il se trouve que presque tout le monde s'en fout, alors …
 
par les premières lettre c'est une combobox sélective
et pour reprendre @Dranreb; non à l'initial la combo donne la première occurrence
alors si la liste est dans l'ordre alphabétique oui sinon non
il y a bien un travail a faire
soit mettre la liste dans l'ordre ( je pense a quick sort par exemple)
soit alors une fonction listant les occurrences
dans le 2d cas c'est un peu pénalisant dans le sens ou si la liste est longue a chaque taper de touche une latence plus ou moins importante peut se manifester avant le remplissage de la combo

ma conclusion dans cette histoire
dans un userform une variable tableau global module
trier avec quick sort (méthode la plus rapide constaté en vba)
au taper réduire la liste aux occurrences avec l'index de début occurrence 1 et index occurrence 2 (dernière occurrence)
méthode éprouvée moult fois ici et ailleurs
il va de soit que la liste réduite est une autre variable bien entendu

Patrick
 
quick sort (méthode la plus rapide constaté en vba)
Une performance très proche dote cependant ma méthode d'indexation par fusions pragmatiques personnelle, gardant donc trace des numéros de ligne où ont été trouvés les éléments de la liste de la ComboBoBox, ce qui évite d'avoir à les rechercher à postériori dans la base lors de la sélection de l'un d'entre eux.
 
si j'ai Plusieurs plats qui commencent par la lettre P PAR Exemple pizza fruit de mer: pizza margarita;pizza viande hache j'aimerais lorsque je tape la lettre P tous les plats avec la lettre P soient lister dans le combobox1 vos solutions ont résolu la premier partie de mon souci.
Merci
 
À quoi ça servirait que la liste ne comporte que les plats commençant par la lettre P ? L'essentiel c'est qu'à l'affichage de la liste elle soit automatiquement positionnée sur le premier d'entre eux, non ? Et ça une ComboBox le fait toujours.
 
- 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
3
Affichages
466
Réponses
1
Affichages
674
Réponses
3
Affichages
761
Réponses
0
Affichages
875
Réponses
9
Affichages
1 K
Retour