XL 2013 Lignes de résultats surnuméraires dans une ListBox

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 !

kiko_23

XLDnaute Junior
Bonjour à tous,

Ayant été promptement aidé et éduqué hier sur un problème de tri, je me résous à vous soumettre un autre petit soucis qui m'ennuie depuis un moment, quelque chose me dit que pour les membres du forum cela devrait être une évidence :

Dans le fichier joint, un formulaire contenant une ComboBox permettant de chercher les occurrences d'un terme dans la feuille "table" et de les afficher dans une ListBox.
Mon problème : la ListBox affiche sous les résultats un nombre de lignes vides et sélectionnables dont je n'arrive pas à déterminer l'origine.

Merci d'avance pour votre aide et votre sagacité !
 

Pièces jointes

Vous sélectionnez CLs dans la liste de gauche qui surmonte la fenêtre de code et SujFltChg dans celle de droite. Ça vous implantera un modèle de prise en charge de l'évènement. Le code à y mettre est généralement un peu compliqué. Le mieux ce serait encore de joindre votre fichier, que je puisse enfin finaliser tout ça.
 
Vous sélectionnez CLs dans la liste de gauche qui surmonte la fenêtre de code et SujFltChg dans celle de droite. Ça vous implantera un modèle de prise en charge de l'évènement. Le code à y mettre est généralement un peu compliqué. Le mieux ce serait encore de joindre votre fichier, que je puisse enfin finaliser tout ça.
Merci beaucoup pour votre aide Dranreb, voici mon fichier exemple dans lequel j'aurais besoin que la valeur "artisan" soit exclue de la ComboBox_categorie du formulaire de recherche.
 

Pièces jointes

Voilà.
J'avais quand même espéré que vous joindriez un fichier plus complet, que je puisse enfin y ajouter les CommandButtons
1737987327258.png
 

Pièces jointes

Voilà.
J'avais quand même espéré que vous joindriez un fichier plus complet, que je puisse enfin y ajouter les CommandButtons
Regarde la pièce jointe 1211759
Merci beaucoup Dranreb ! Effectivement je n'aurais guère pu sortir ce code pour SujFltChg de mon chapeau :-D

En fait mon fichier global est un sacré bouzin avec 12 modules interminables et des variables en quantité industrielle (il y a 2 types de fiches "produit", un système de présentation sous forme de galerie pour les catégories et résultats de recherche, des fonctions d'export, de sauvegarde et je dois en oublier) et j'avais un peu peur que vous me suggériez de tout remettre à plat, d'autant que mon système "maison" d'ajout, modification et suppression a l'air de fonctionner. Ceci étant, quand j'en aurais fini avec les quelques bugs qui trainent ici ou là, principalement des histoires de navigation (parce que je n'ai pas encore bien compris pourquoi le contenu de certaines de mes variables disparait de temps à autres), si cela vous intéresse toujours d'y jeter un œil je vous transmettrais le fichier final avec plaisir !
 
Bonjour Dranreb, je devrais pouvoir poster mon fichier en cours de finalisation dans un ou deux jours, mais en attendant j'ai une nouvelle difficulté es ComboBoxs liées sur mon formulaire d'ajout/modification.

Dans ce dernier, lorsque l'on crée une nouvelle entrée, un champ TextBox en regard de chaque ComboBox permet de créer un nouvel item, le changement de valeur dans la dite TextBox attribuant à la ComboBox correspondante un ListIndex = -1.

Mon problème est le suivant : lorsque la seconde ComboBox liée ne contient qu'une seule valeur, cet ordre est inopérant et elle conserve son index. En revanche, à partir du moment où plusieurs valeurs existent dans cette ComboBox, l'instruction de changement d'index fonctionne parfaitement.
Si je fais un .ListCount je n'ai effectivement que l'index 1, et même en tentant .Clear ou .Value = Null cela n'a aucun effet.

Auriez vous une solution pour que cette ComboBox n'affiche aucun item lorsque je change le contenu de ma TextBox ?
 
Bonjour.
Curieux que vous n'ayez pas encore répondu à mon dernier message.
J'avais vaguement espéré que cela vous inciterait à me fournir enfin le tableau avec toutes ses colonnes au complet, afin que je vous finalise cette programmation correctement !
 
Bonjour.
Curieux que vous n'ayez pas encore répondu à mon dernier message.
J'avais vaguement espéré que cela vous inciterait à me fournir enfin le tableau avec toutes ses colonnes au complet, afin que je vous finalise cette programmation correctement !
Bonsoir Dranreb,

Veuillez m'excuser, j’ai été très pris par d’autres urgences loin de la matrice et suis en fait tout bonnement passé à côté de votre dernier message dont je ne prend connaissance qu'à l'instant.

Suite à votre avant dernier message en revanche, j'ai revu le principe de mon formulaire d'ajout / modification, et c'est vrai que ça fonctionne bien de cette façon tout en allégeant le code autant que l'apparence du formulaire.

Peu habitué que je suis à l'utilisation de ce type d'outil de classement, j'avais utilisé des textboxs adjacentes pour les ajouts en pensant initialement que ce serait plus intuitif pour les utilisateurs que de taper dans un menu déroulant. Nous verrons à l'usage, mais devant la chose accomplie je me dis que la petite légende incitant à ajouter soi-même un nouvel item en tapant dans la ComboBox devrait être une indiquation suffisante !

Alors oui, j'aurais vraiment voulu que ce soit le message dans lequel je vous présente ma version beta, mais mon but étant de finaliser au maximum par moi-même, je suis assez regardant sur le niveau de finalisation avant cette étape.

Notez cependant que je vous suis vraiment très reconnaissant pour toute votre aide ainsi que votre proposition de finaliser, seulement je suis un peu borné et j'aime tant que faire se peut faire les choses par moi-même, dusse-je les faire dans la douleur...

En conséquence, mon problème du jour est en lien avec une de vos précédentes réponses : j'ai conscience de demander beaucoup à vos cbb liées, mais voilà, j'utilise votre code CLs_SujFltChg pour exlcure des items différents de plusieurs cbb de cette façon :

For LO = 0 To UBound(LesClés)

If CBM.CBx Is Me.ComboBox_categorie Then
If LesClés(LO) <> "artisan" And LesClés(LO) <> "auteur" Then LR = LR + 1: LesClés(LR) = LesClés(LO): LesListes(LR) = LesListes(LO)
Else
If LesClés(LO) = "artisan" Or LesClés(LO) = "auteur" Then LR = LR + 1: LesClés(LR) = LesClés(LO): LesListes(LR) = LesListes(LO)
End If
Next LO

Cela fonctionne si les cbb sont situées sur la même page du MultiPage1 dans le UserForm.
En revanche, dès que ce sont des cbb placées sur des pages différentes, survient dans la même fonction une erreur d’exécution "9" (l'indice n'appartient pas à la sélection) à la ligne :

ReDim Preserve LesClés(0 To LR), LesListes(0 To LR)

Savez-vous comment je pourrais contourner ce problème ?
 

Pièces jointes

Dernière édition:
Mais est-ce bien pour toutes les autres ComboBox prises en charge qu'il y toujours au moins "artisan" ou "auteur" ?
Je n'ai pas encore ouvert le fichier mais là j'ai bien l'impression que vous vous retrouvez avec un LR à -1 à la fin !
Remarque : Quand la Function SujCBxFiltré du module MSujetCBx ne trouve plus rien à la fin elle fait :
VB:
   If KS < 0 Then ReDim LesClés(-1 To -1), LesListes(-1 To -1) Else _
         ReDim Preserve LesClés(0 To KS), LesListes(0 To KS)
Je ne l'avais plus présent à l'esprit, mais il faut croire que le ComboBoxLiées s'en accomode bien puisqu'il fait des boucles for K = 0 to Ubound(… qui ne passent donc pas une seule fois dans leurs instructions dans ce cas …
 
Dernière édition:
Mais est-ce bien pour toutes les autres ComboBox prises en charge qu'il y toujours au moins "artisan" ou "auteur" ?
Je n'ai pas encore ouvert le fichier mais là j'ai bien l'impression que vous vous retrouvez avec un LR à -1 à la fin !
Remarque : Quand la Function SujCBxFiltré du module MSujetCBx ne trouve plus rien à la fin elle fait :
VB:
   If KS < 0 Then ReDim LesClés(-1 To -1), LesListes(-1 To -1) Else _
         ReDim Preserve LesClés(0 To KS), LesListes(0 To KS)
Je ne l'avais plus présent à l'esprit, mais il faut croire que le ComboBoxLiées s'en accomode bien puisqu'il fait des boucles for K = 0 to Ubound(… qui ne passent donc pas une seule fois dans leurs instructions dans ce cas …
Bonjour Dranreb,

Effectivement c'est pour plusieurs autres cbb sur plusieurs pages du MultiPage1 que certains items seront exclus ou inclus, mais pour exposer mon problème précis d' "erreur 9" une seule cbb suffisait d'où le "Else" générique.

De ce que j'ai constaté, ce principe de "If CBM.CBx Is Me.ComboBox_XXXXX Then ..." fonctionne très bien tant que les ComboBoxs concernées ne sont pas sur des pages différentes du MultiPage.
 
Dernière édition:
Je n'utilise pratiquement jamais de Multipage, mais ça ne devrait pas jouer du moment que ces ComboBox différentes ainsi dispersées gèrent bien toujours des colonnes différentes de la base.
Non, même si elles gèrent des colonnes différentes de la base j'ai ce problème d'erreur d’exécution "9" (l'indice n'appartient pas à la sélection) si elles ne sont pas sur la même page.

Ceci étant, comme dans mon fichier exemple, je l'utilise aussi pour gérer une même colonne de la base afin d'exclure les items "artisan" et "auteur" dans la ComboBox_catégorie de la Page1 du MultiForm1, et faire apparaitre uniquement les items "artisan" et "auteur" dans la ComboBox_categorie_art de la Page2. Cela fonctionne jusqu'au moment de la sélection d'un item provoquant l'erreur d'exécution.
 
Un conseil: n'utilisez jamais de Multipage.
Et utilisez des objets ComboBoxLiées différents, un seul étant actif à chaque instant, s'il doivent gérer la même colonne d'une base pour des ComboBox différentes, une même ComboBox mais sur des base différentes etc.
N'oubliez pas que j'ai aussi un objet ControlsAssociés pour ramener ou renvoyer aussi en une seule instruction les valeurs des autres contrôles pour une ligne donnée.
 
Dernière édition:
- 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

Retour