Ajout d'un nouveau combobox avec recherche intuitive

  • Initiateur de la discussion Initiateur de la discussion Aragon10
  • Date de début Date de début

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 !

Aragon10

XLDnaute Occasionnel
Bonjour le forum,

Je voudrais ajouter un nouveau combobox (combobox2) sur mon userform existant et qui s'alimente de la Feuille "CD1" qui avait la même structure que la feuille une "CD" . je sollicite garder les mêmes caractéristiques du combobox1 (recherche intuitive+ sans doublons+ordre alphabétique+ liaison direct avec la listbox 2).

la première étape du travail est faite par Mr Dranreb que je le remercie énormément.

Document Cjoint



Merci pour votre aide.
 
Dernière édition:
Re : Ajout d'un nouveau combobox avec recherche intuitive

Bonjour.

Donnez des noms mnémoniques relatif à chacune des deux feuilles à tout ce qui s'y réfère. Expliquez moi un peu leurs rôles respectif et joignez ici le classeur rectifié, si toutefois il ne marchait pas déjà tout seul après ces aménagements.

J'ajouterais juste que dans le dernier classeur ci joint qui est encore ouvert chez moi (je n'ai pas ouvert celui de votre poste, je pense que c'est le même), après suppression du module MSujetCBx1 et correction de
Set PlgTablo1 = PlgUti(Feuil1.Rows(2))
SujPrinc1 = SujetCBx(PlgTablo.Columns(4), Base:=0)
Sujet1 = SujPrinc1: ComboBox2.List = Sujet(0)
en
Set PlgTablo1 = PlgUti(Feuil1.Rows(2))
SujPrinc1 = SujetCBx(PlgTablo1.Columns(4), Base:=0)
Sujet1 = SujPrinc1: ComboBox2.List = Sujet1(0)
Tout paraît rentrer dans l'ordre.
Mais ces noms ça ne va pas du tout quand même, de ne pas l'avoir vu en est la preuve.
 
Dernière édition:
Re : Ajout d'un nouveau combobox avec recherche intuitive

Bonjour,

Il y'a tout un chantier dans ma tête. j'ai voulu avancer étape par étape mais bon je vais tout vous expliquer. La structure de mon fichier initial est la suivante:

Document Cjoint

- La première feuille "CD" indique les commandes des clients importateurs et la deuxième feuille "DAT" indique les commandes des clients exportateurs.
- une troisième feuille "CLIENT" qui indique tout les clients exportateurs+importateurs (sur la colonne D).


Les étapes de mon travail sont les suivantes :

1) créer deux combobox non visibles (combo1 qui s'alimente de la feuille "CD" et attaché à une listbox1 et un combo2 qui s'alimente de la feuille "DAT" et rattaché à une listbox2)

2) créer un troisième combobox3 (visible) qui s'alimente de la 3ème feuille et qui regroupe tout les clients (exportateurs+importateurs).

3) mettre sur le combobox1 change et le combobox2 change la condition suivante:

combobox1 =combobox3
combobox2 = combobox3

Le résultat souhaité c'est de pouvoir afficher l'historique de chaque client tapé dans le combo3 (sur l'une des 2 listbox ou sur les 2 listbox s'il s'agit bien d'un client importateur et exportateur à la fois).

j'ai voulu faire tout ce chemin parce que c'est le plus adéquat vu mes connaissances basiques en VBA.


Merci pour votre compréhension
 
Dernière édition:
Re : Ajout d'un nouveau combobox avec recherche intuitive

Alors là, il vaudrait vraiment mieux avoir tous les clients sur une seule feuille avec une colonne qui indique s'il est exportateur, importateur ou les deux. À la rigueur 2 colonnes avec des coches en police Wingdings, une pour indiquer qu'il est exportateur, l'autre importateur. Ce n'est pas possible ? J'ajoute que ce serait facile avec une seule CBxNom et une seule ListBox d'y lister seulement l'un ou l'autre selon des boutons d'option, grâce au module MSujetCBX.

Mais après avoir relu plusieurs fois votre explication il me semble que ça ne vous intéresse même pas de garder la distinction entre importateur et exportateur. Mais alors pourquoi diable sont ils au départ sur des feuilles séparées ? Si c'est parce qu'il est techniquement difficile de les avoir sur une seule feuille du fait qu'ils proviennent de sources différentes, la meilleur chose à faire c'est, dès les importations de données, mettre au bout le bout le détail des deux feuilles dans une troisième et ne travailler que sur celle ci pour la consultation par l'UserForm.

Si ça ne vous plait pas non plus il est encore possible de ne faire la fusion que dans un Tableau VBA en mémoire, sur lequel l'UserForm travaillera exclusivement.
 
Dernière édition:
Re : Ajout d'un nouveau combobox avec recherche intuitive

Bonsoir,

J'aurais aimé faire la fusion des deux feuilles et appliquer votre solution d'hier mais pour des raisons purement techniques je préfère les garder séparément . En plus au delà de la colonne "R" la structure des deux feuilles n'est plus la même .c'est pour ça j'ai voulu créer 2 Listbox distinctes avec 2 labels (importateur et exportateur) et avec un combobox qui unit tout les clients ( si vous pouvez extraire tout les clients existants sur les 2 feuilles à la fois sans passer par la 3ème feuille ça sera parfait).

Merci Dranreb ;-)
 
Re : Ajout d'un nouveau combobox avec recherche intuitive

Bon d'accord. On restituera pour un nom sélectionné toutes les occurrence de la CD puis derrière toutes celles de la DAT.
Mais je supprime le bouton valider et le reste de la programmation que vous aviez faite.
Il n'est plus question de pouvoir faire des mises à jour si la base est en mémoire.
Ça vous va ?
 
Re : Ajout d'un nouveau combobox avec recherche intuitive

vous avez compris mon but. c'est vous le maître cher Dranreb ;-)

concernant les boutons de validations, vous pouvez les supprimer car je vais les ajouter par la suite avec mes feuilles sources (CD ET DAT).

Merci.
 
Re : Ajout d'un nouveau combobox avec recherche intuitive

Merciiiii Merciiii beaucoup 🙂)))

juste un petit truc: Est ce qu'on peut ajouter à titre indicatif une colonne dans la listbox qui indique s'il s'agit bien d'un importateur ou exportateur) ?

sur la colonne "V" de la feuille CD il y'a une colonne importateur et sur la colonne "Z" de la feuille DAT il y'a une colonne exportateur.
si ça va tout bouleverser alors on laisse tomber.

je vous remercie encore une fois 🙂
 
Dernière édition:
Re : Ajout d'un nouveau combobox avec recherche intuitive

Non ça ne va pas tout bouleverser. Mais essayez de le faire vous même.
C'est assez facile, seules vos fautes d'inattention feront bloguer le truc.

Chez moi c'est fait. A pas marché du 1er coup. Oublié ReDim TLBx(0 To UBound(TLgn), 0 To 17)
Du second, oui.
 
Dernière édition:
Re : Ajout d'un nouveau combobox avec recherche intuitive

c'est facile d'ajouter une nouvelle colonne si les données des deux feuilles existent sur la même colonne mais le problème que les données existent sur des colonnes différentes (sur la colonne "V" de la feuille CD et sur la colonne "Z" de la feuille DAT ) :/
En plus je veux les placer sur la 2ème colonne de la listbox (après la date). il faudra votre magie 😀
 
Dernière édition:
Re : Ajout d'un nouveau combobox avec recherche intuitive

Alons bon, vous avez édité votre message. Je croyais qu'il n'y avais que moi à avoir cette mauvaise habitude.
Ce n'est plus "CD" ou "DAT" que vous voulez mais une info qui n'est plus récupérée actuellement. Alors remettez des PlgUti au lieu de ColUti pour à nouveau tout récupérer dans TbCD et TDAT.

Et alors ? les infos des deux feuilles sont bien empilées par deux boucles différentes, vous pouvez donc très bien y spécifier deux colonnes différentes.
 
Dernière édition:
Re : Ajout d'un nouveau combobox avec recherche intuitive

j'ai pas su comment les ajouter à partir des colonnes différentes et faire déplacer la colonne ajoutée au début de la listbox :/

cher Dranreb, je vous jure que c'est la dernière et je vais plus vous déranger 🙂))
 
Re : Ajout d'un nouveau combobox avec recherche intuitive

VB:
TbCD = PlgUti(FeuiCD.Rows(3)).Value
TDAT = PlgUti(FeuiDAT.Rows(3)).Value
ReDim TDon(1 To UBound(TbCD) + UBound(TDAT), 1 To 19)
For Le = 1 To UBound(TbCD): Ls = Ls + 1: TDon(Ls, 1) = TbCD(Le, 2): TDon(Ls, 2) = TbCD(Le, 1)
   TDon(Ls, 3) = TbCD(Le, 22): For C = 4 To 19: TDon(Ls, C) = TbCD(Le, C - 1): Next C, Le
For Le = 1 To UBound(TDAT): Ls = Ls + 1: TDon(Ls, 1) = TDAT(Le, 2): TDon(Ls, 2) = TDAT(Le, 1)
   TDon(Ls, 3) = TDAT(Le, 26): For C = 4 To 19: TDon(Ls, C) = TDAT(Le, C - 1): Next C, Le
 
- 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
  • Question Question
Réponses
5
Affichages
1 K
C
Réponses
9
Affichages
28 K
chamallowette
C
C
Réponses
1
Affichages
2 K
Clo from Ghost World
C
Retour