Coller dans case sélectionné à partir de userform liste déroulante choix multiple

  • Initiateur de la discussion Initiateur de la discussion ben.wide
  • 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 !

ben.wide

XLDnaute Nouveau
Bonjour !

Je me lance à l'occasion d'une fonction un peu compliqué à mettre en place, mais pas insurmontable je pense, dans les macros, userform et tutti quanti.

En gros :

J'ai une liste de pays, que j'ai pu intégrer à une liste déroulante dans un userform.
Avec un bouton de commande copier, les pays sélectionnés (j'ai choisi choix multiples) se collent dans une case.

J'ai trouvé des bouts de codes sur internet que j'ai intégrer sans y comprendre pas grand chose...

Ce que j'aimerais : que les pays sélectionnés se collent dans la case sélectionné avant de cliquer sur le bouton userform... Je suis sûr que c'est possible et pas si compliqué que ça ! 🙂

Et aussi que cela se colle dans la même case, et pas dans des cases superposés...

Vous pouvez m'aider ??

Merci en tout cas !

Fichier ci-joint au cas où cela ne vous paraît pas très clair !

Benjamin
 

Pièces jointes

Re : Coller dans case sélectionné à partir de userform liste déroulante choix multipl

Re,

J'ai ouvert ton fichier est à vrai dire, trouver une fonction excel pour faire ce que tu demandes est du niveau d'un Tibo ou David84 mais pas d'un petit hasco null en fonction matricielle.


Ceci dit deux suggestions:

1 - il me semble, qu'il serait préférable que tu donnes un fichier avec une vue d'ensemble du but que tu cherches au final. Car les questions à tiroirs (ou poupées russes) sont les plus embêtantes à traiter.

2 - Avec une feuille Clients avec une seule opération par ligne serait plus facile à gérer.

Bon courage.

A+
 
Re : Coller dans case sélectionné à partir de userform liste déroulante choix multipl

Ok merci pour ton retour

L'idéal aurait été qu'avec SOMME.SI on puisse additionner dans une case des éléments de texte... Rien n'est si simple...

Je vais continuer à fouiller

Mais en gros l'idée serait vraiment de faire un énorme tableau récap, avec une ligne par CLIENT, et que l'on puisse lister par territoires les produits qu'il a commandé... J'avoue c'est pas forcément simple... Si tu vois une autre solution lisible je suis bien sûr à l'écoute...

Si tu es de passage sur Paris je te dois déjà un pot !

Merci en tout cas
 
Re : Coller dans case sélectionné à partir de userform liste déroulante choix multipl

RE,

Le plus simple serait d'avoir une feuille Base de données avec
comme Champs: CLIENT|TERRITOIRE|PRODUIT

Cela sera, plus rapide pour construire ton tableau final et présentera l'avantage de pouvoir, extraire, filtrer et trier les données.

A+
 
Re : Coller dans case sélectionné à partir de userform liste déroulante choix multipl

Bonjour, salut Hasco😉
j'ai regardé ton tableau suite à ton MP.
N'ayant pas suivi tout le fil, le plus simple serait que tu marques manuellement sur le fichier les résultats et le type de présentation attendus.
A+
 
Re : Coller dans case sélectionné à partir de userform liste déroulante choix multipl

Ok je joins le tableau avec une meilleure présentation pour ce que ce soit plus clair...

Dis moi si tu as besoin de plus d'infos !

Thanks again...
 

Pièces jointes

Re : Coller dans case sélectionné à partir de userform liste déroulante choix multipl

Bonjour,

Une piste en C5 avec cette formule :

Code:
=SI(ESTNUM(TROUVE(C$2;Listes!$H$6));Listes!$I$6;"")&SI(ESTNUM(TROUVE(C$2;
Listes!$H$7));Listes!$I$7;"")

Mais la disposition des données ne me paraît pas favorable pour un traitement formule.

Combien de clients peut-il y avoir ?


@+
 
Re : Coller dans case sélectionné à partir de userform liste déroulante choix multipl

Re Ben,
Hello Tibo,🙂

voici un exemple de ce qu'on peut faire en ayant une base de données (Feuille Datas)

Voir bouton sur feuille Récap.

Mais peut-être que Tibo arriverait à faire la même chose par formule. Perso, je m'en sens incapable.

A+
 
Re : Coller dans case sélectionné à partir de userform liste déroulante choix multipl

re,

Salut Ges 🙂,

Par formule, c'est possible par concaténation de formule.

Mais le souci, c'est qu'il faut prévoir le nombre maxi de concaténations. Et ça va nous donner une formule plutôt lourde et indigeste.

Donc, il est préférable de rester sur une version VBA me semble-t-il, d'autant qu'une autre procédure VBA est déjà présente.

@+
 
Re : Coller dans case sélectionné à partir de userform liste déroulante choix multipl

Tibo merci pour ta participation

Pour cette formule :
=SI(ESTNUM(TROUVE(B4;Listes!$H$6));Listes!$I$6;"")&SI(ESTNUM(TROUVE(B4;Listes!$H$7));Listes!$I$7;"")

Je crois que cette formule est vraiment très proche de ce dont j'ai besoin... Le seul problème est que j'aimerais qu'il puisse faire la recherche pour toute la colonne pays, et pas seulement par ligne... En effet dans ma matrice je vais devoir ajouter des lignes au fur et à mesure, et si je dois rajouter un bout de formule à chaque fois ca va être complexe. La solution peut-être de faire une formule à rallonge, une par ligne... A voir

En attendant j'ai illustré mon problème avec le fichier ci-joint pour une meilleure compréhension... On y est presque vraiment je crois !

Merci à vous sincèrement en tout cas

Benjamin
 

Pièces jointes

Re : Coller dans case sélectionné à partir de userform liste déroulante choix multipl

hasco ta solution était chouette aussi, mais il est vraiment nécessaire pour moi de pouvoir lister dans une même case plusieurs produits, et ton système m'impose (je crois ?) de faire une ligne par produits dans ma base de données...
 
Re : Coller dans case sélectionné à partir de userform liste déroulante choix multipl

Re,

Dernière tentative pour moi:

une fonction personalisée à mettre dans un module:

Code:
[COLOR=BLUE]Public[/COLOR] [COLOR=BLUE]Function[/COLOR] ProduitsParPays(strPays [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]String[/COLOR]) [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]String[/COLOR]
    [COLOR=BLUE]Dim[/COLOR] tbl [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]Variant[/COLOR]
    [COLOR=BLUE]Dim[/COLOR] i [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]Integer[/COLOR]
    [COLOR=BLUE]Dim[/COLOR] res [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]Variant[/COLOR]
    [COLOR=BLUE]If[/COLOR] strPays = [i]""[/i] [COLOR=BLUE]Then[/COLOR]
        res = CVErr(xlErrRef)
        [COLOR=BLUE]Exit[/COLOR] [COLOR=BLUE]Function[/COLOR]
    [COLOR=BLUE]Else[/COLOR]
        strPays = UCase(strPays)
        [COLOR=BLUE]With[/COLOR] Sheets([i]"Listes"[/i])
            tbl = .Range([i]"H5:I"[/i] & .Range([i]"H"[/i] & .Rows.Count).[COLOR=BLUE]End[/COLOR](xlUp).Row).Value
        [COLOR=BLUE]End[/COLOR] [COLOR=BLUE]With[/COLOR]
        [COLOR=BLUE]For[/COLOR] i = 1 To [COLOR=BLUE]UBound[/COLOR](tbl)
            [COLOR=BLUE]If[/COLOR] InStr(1, tbl(i, 1), strPays) > 0 [COLOR=BLUE]Then[/COLOR] res = res & tbl(i, 2) & Chr(10)
        [COLOR=BLUE]Next[/COLOR] i
        [COLOR=BLUE]If[/COLOR] TypeName(res) = [i]"[COLOR=BLUE]String[/COLOR]"[/i] [COLOR=BLUE]And[/COLOR] Right(res, 1) = Chr(10) [COLOR=BLUE]Then[/COLOR]
            res = Left(res, Len(res) - 1)
        [COLOR=BLUE]Else[/COLOR]
            res = CVErr(xlErrNA)
        [COLOR=BLUE]End[/COLOR] [COLOR=BLUE]If[/COLOR]
    [COLOR=BLUE]End[/COLOR] [COLOR=BLUE]If[/COLOR]
    ProduitsParPays = res
[COLOR=BLUE]End[/COLOR] [COLOR=BLUE]Function[/COLOR]

En B4 de Récap:
=ProduitsParPays(B4)
Tirer vers la droite

A+
 
Re : Coller dans case sélectionné à partir de userform liste déroulante choix multipl

Ok je l'ai bien implémenté au tableau, 2 petits soucis malheureusement :
- la fonction ne se met pas à jour automatiquement si je change les données dans la base
- plus gênant, comme au final je vais avoir pleins d'onglets (BASE 1, BASE 2, etc.) il faudra si je comprend bien que je fasse un module par onglets...

Dommage parce que la création d'une fonction résumé (ProduitsParPays) comme ca (encore quelque chose que j'ignorais sur excel, c'est génial) était top pour une compréhension du tableau, sans passer par des formules à rallonge...

Ci-joint une version du tableau avec plusieurs onglets, un par BASE...

Ok ca fait vraiment genre je pose les problèmes au fur et à mesure, mais c'est compliqué d'être à la fois concis et précis...

Merci en tout cas Hasco
 

Pièces jointes

Re : Coller dans case sélectionné à partir de userform liste déroulante choix multipl

Re,

Pour que la fonction se mette à jour lorsque les données changent:

Mettre en première ligne de la fonction:
Code:
 Application.Volatile
C'est tout.

La Fonction est déclarée 'Public' tu peux donc l'appelé de n'importe quel feuille à partir du moment où tu l'as mise dans un module général.

A toi de voir si les temps de traitements sur de nombreuses données sont acceptables.
Pour gagner un peu de temps et éviter les appels inutiles je te conseille ce genre de formule:

Code:
=SI(B5="X";ProduitsParPays(B4);"")

A+
 
Dernière modification par un modérateur:
- 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
2
Affichages
771
Retour