XL 2010 Liste filtrée pour combobox à 1 ou x colonne(s) (Titre màj)

cathodique

XLDnaute Barbatruc
Bonjour,

Je fais appel aux férus de VBA (pas comme moi, Vbiste autodidacte du dimanche).

Au fil de mes recherches j'ai trouvé dans les ressources un fichier de @Dudu2 (ICI) très pratique.

Je voudrai appliquer son code à plusieurs ComboBox. Mais je ne sais pas utilisé les modules de classe.

J'ai pourtant suivi des tutos en vidéo (l'anglais n'étant pas mon fort) sans comprendre grand chose.

Dernièrement, @patricktoulon a eu la gentillesse de corriger un code trouver sur le net et a dédié une vidéo pour expliquer ce que sont les modules de Classe. J'ai compris dans l'ensemble le principe. Mais ça coince toujours lors de l'écriture du code. Petite cervelle restera petite cervelle😢😢

Je ne joins pas de fichier, vous le trouverez en suivant le lien.

Je vous en remercie par avance.

Bon dimanche.

nb: j'ai envoyé à @Dudu2 pour l'informer
 
Dernière édition:
Solution
re
oui j'ai fais cette erreur jean-marie a corrigé
je vous lais éviter de repasser tout les items en revu en cas de grande liste
perso je corrigerais comme ça
VB:
For i = .ListCount - 1 To Application.Max(.ListCount - 3, 0) Step -1
tout ton code et tes controls fonctionnent dans mon userform

Dudu2

XLDnaute Barbatruc
Tu copies un code qui plante et qui n'appartient pas au code de la ressource mais qui en a des allures.
J'en conclue que tu as modifié le code de la ressource, je ne sais dans quel but et je te renvoie à l'explication qui est donnée dans la ressource qui, effectivement, à aucun moment ne demande d'en modifier le code si tu lis les instructions. Je ne vois pas de quoi prendre ça mal.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Dans ce que j'ai fournis non plus aucune programmation de service n'est jamais à modifier, tout se pilote toujours depuis l'UserForm. La Function SujCBxLike du modul MSujetCBx permettrait d'établir la liste des entrées commençant par le début tapé. Le CLsCAsContacts.xlsm propose les nom et prénom contenant des caractères tapés, pas forcément au début. Pour avoir ceux qui débutent par ces caractère il faut d'ailleurs effacer la fin assumée ou mettre la propriété MatchEntry de la combobox à 2 - fmMatchEntryNone, ce que je trouve personnellement dommage. Il me semble plus simple d'avoir juste à taper le début jusqu'à ce que le nom souhaité soit assumé.
 

cathodique

XLDnaute Barbatruc
Bonjour.
Dans ce que j'ai fournis non plus aucune programmation de service n'est jamais à modifier, tout se pilote toujours depuis l'UserForm. La Function SujCBxLike du modul MSujetCBx permettrait d'établir la liste des entrées commençant par le début tapé. Le CLsCAsContacts.xlsm propose les nom et prénom contenant des caractères tapés, pas forcément au début. Pour avoir ceux qui débutent par ces caractère il faut d'ailleurs effacer la fin assumée ou mettre la propriété MatchEntry de la combobox à 2 - fmMatchEntryNone, ce que je trouve personnellement dommage. Il me semble plus simple d'avoir juste à taper le début jusqu'à ce que le nom souhaité soit assumé.
Bonjour Dranreb,

Je te remercie mais je t'avoue que j'ai essayé de comprendre tes codes sans succès.
En plus je ne souhaite pas installé de complément.

Bonne journée.
 

cathodique

XLDnaute Barbatruc
Tu copies un code qui plante et qui n'appartient pas au code de la ressource mais qui en a des allures.
J'en conclue que tu as modifié le code de la ressource, je ne sais dans quel but et je te renvoie à l'explication qui est donnée dans la ressource qui, effectivement, à aucun moment ne demande d'en modifier le code si tu lis les instructions. Je ne vois pas de quoi prendre ça mal.
Rebonjour,
1712569253620.png

C'est ici que j'ai trouvé ton fichier (je t'ai mis le lien au post#45)
Je maintiens ce que je t'ai dit, je n'ai pas modifié mais adapté.
VB:
Private Sub ComboBoxTest_Enter()
    Call SaisieFiltréeComboBoxEnter(Me.ComboBoxTest, _
                                     ThisWorkbook.Worksheets("Liste Référence").ListObjects(1).DataBodyRange)
End Sub
Ta combobox se nomme ComboBoxTest, la mienne CobAutre.
J'ai modifié le nom de la combobox et du tableau. Est-ce que cela signifie que j'ai modifié ton code?
A moins que tu ne veuilles que l'on adopte aussi les noms que tu as utilisé dans ton fichier.

Bonne journée.

ps: ma solution pas pro, pas "orthodoxe" mais répond à mon besoin.
Que je partage gracieusement, modifiable à volonté.
Code:
Private Sub CobAutre_Change()
   Dim d As Object, Tmp, c

   Set d = CreateObject("Scripting.Dictionary")
   If EstVariantVide(Range("TbAutres")) Then Exit Sub
   Tmp = UCase(Me.CobAutre) & "*"
   For Each c In Range("TbAutres")
      If UCase(c) Like Tmp Then d(c.Value) = ""
   Next c
   Me.CobAutre.List = d.keys
   Me.CobAutre.DropDown

End Sub
 

patricktoulon

XLDnaute Barbatruc
Bonjour @cathodique
moi je dirais que @Dudu2 et moi t'avons donné deux solution différentes mais qui fonctionnent
et cela sur 1 colonne ou plus et sur combo ou listbox
faut il encore savoir les adapter
certes la solution du dico est simple mais sur certains pc il risque d'être déactivé

et finalement la discussion n'a rien avoir avec le titre
 

Dranreb

XLDnaute Barbatruc
Je te remercie mais je t'avoue que j'ai essayé de comprendre tes codes sans succès.
En plus je ne souhaite pas installé de complément.
Il y a pourtant une page d'aide dans le classeur précurseur du complément qui explique en détail les propriétés, méthodes et évènements utilisables dans un UserForm. Il n'est guère utile de chercher à comprendre comment il procède pour effectuer ce qui y est dit. Vous n'avez pas besoin non plus (ni ne le pouvez, là…) pour pouvoir vous en servir de chercher à comprendre comment procède la méthode Range de l'objet Worksheet, par exemple.
Le CLsCASContacts.xlsm n'utilise pas le complément. De ce fait le code de service y est hélas accessible.
Cependant je répondrai à vos question sur l'utilisation des objets ComboBoxLiées et ControlsAssociés si vous en avez …
 

cathodique

XLDnaute Barbatruc
Bonjour @cathodique
moi je dirais que @Dudu2 et moi t'avons donné deux solution différentes mais qui fonctionnent
et cela sur 1 colonne ou plus et sur combo ou listbox
faut il encore savoir les adapter
certes la solution du dico est simple mais sur certains pc il risque d'être déactivé

et finalement la discussion n'a rien avoir avec le titre
Bonjour @patricktoulon,
Je remercie et je te dois des explications.
En fait, j'ai vite crié victoire. Et, je n'ai pas dit que vos codes ne fonctionnaient pas.
J'ai trouvé par hasard le fichier de @Dudu2 (lien aux posts 45 et 57).
Je l'ai testé et fonctionné. D'où l'idée de transformer son code en module de classe.
Cependant, en vidant le tableau source, le code a planté.
et finalement la discussion n'a rien avoir avec le titre
Si tu veux car je ne me suis aperçu du problème qu'après avoir ouvert cette discussion.

Mon idée est peut-être tordue mais c'est ce que je voulais faire:
Ajouter à un tableau vide à partir d'une combobox des données avec l'option de la filtrer à la saisie.
Je ne sais pas si je suis clair.
Autrement dit, initialement le tableau est vide,
je saisie dans la combobox par exemple Cheval ,
j'enregistre cette donnée dans le tableau
au prochain tour si je saisis c , la combo me fait apparaitre cheval, si c'est ce que je veux, je clique dessus sinon je continu ma saisie par ex: Chameau.
et ainsi de suite..... ajouter des items inexistant.

Merci beaucoup.
 
Dernière édition:

cathodique

XLDnaute Barbatruc
Il y a pourtant une page d'aide dans le classeur précurseur du complément qui explique en détail les propriétés, méthodes et évènements utilisables dans un UserForm. Il n'est guère utile de chercher à comprendre comment il procède pour effectuer ce qui y est dit. Vous n'avez pas besoin non plus (ni ne le pouvez, là…) pour pouvoir vous en servir de chercher à comprendre comment procède la méthode Range de l'objet Worksheet, par exemple.
Le CLsCASContacts.xlsm n'utilise pas le complément. De ce fait le code de service y est hélas accessible.
Cependant je répondrai à vos question sur l'utilisation des objets ComboBoxLiées et ControlsAssociés si vous en avez …
Bonsoir @Dranreb ,

Je remercie de me tendre la main. Je me mêle très souvent les pinceaux.
Avec un code simple de @Dudu2, je me suis noyé.
Tes codes sont super élaborés par rapport à mon niveau et je n'aime pas travailler sans comprendre un minimum.
Pour le moment, je dois avancer. Je t'assure que j’essaierai tes codes dès que possible.
J'ouvrirai si nécessaire une discussion ou te demanderai des explications en mp.
J'apprécie vraiment ton geste.
Encore merci.

Bonne soirée.
 

patricktoulon

XLDnaute Barbatruc
re
ok je comprends mieux ce que tu veux faire
cela dit
je saisie dans la combobox par exemple Cheval ,
j'enregistre cette donnée dans le tableau
a quel moment si la chaine tapée n'existe pas tu veux l'inscrire dans ton tableau ?
par ce que là c'est risquer
si c'est au change
tu tape "c" il y est pas ca ajoute dans le tableau
tu tape "ch" il y est pas pareil
etc..etc
il faut soit réserver la touche enter soit un bouton
 

cathodique

XLDnaute Barbatruc
re
ok je comprends mieux ce que tu veux faire
cela dit

a quel moment si la chaine tapée n'existe pas tu veux l'inscrire dans ton tableau ?
par ce que là c'est risquer
si c'est au change
tu tape "c" il y est pas ca ajoute dans le tableau
tu tape "ch" il y est pas pareil
etc..etc
il faut soit réserver la touche enter soit un bouton
Connaissant tes compétences, je te fais confiance.
Je stocke dans un tableau structuré à 1 colonne. Mon code semble fonctionner avec le change.
La saisie s'ajoute au tableau via un bouton valider qui enregistre aussi d'autres contrôles dans un autre tableau.
Mais je n'ai pas ton expérience.

Merci.

Bonne soirée.