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

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

  • Choisir Pays.xls
    44 KB · Affichages: 215
  • Choisir Pays.xls
    44 KB · Affichages: 227
  • Choisir Pays.xls
    44 KB · Affichages: 232
G

Guest

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

Re,

Non au contraire je ne confirme pas. Relis bien le post.

Tu peux l'appeler de n'importe quelle feuille du moment qu'elle est dans un module général.

A+
 

ben.wide

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

Le problème c'est que ce code associe le module à une feuille, donc il ne fait la recherche que dans cette feuille. J'ai modifié le code pour l'adapter à mon problème


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

Le top du top serait que je puisse définir la feuille à laquelle s'applique cette fonction dans la formule, genre =ProduitsParPays(BASE 1!B5:C5;B4)
Ce serait juste royal

Par contre je n'arrive pas à mettre en place Application.Volatile, que j'ai bien placé en en-tête du code

Peux-tu me montrer comment faire ?...
 

Pièces jointes

  • TEST SUIVI.zip
    18.9 KB · Affichages: 15
  • TEST SUIVI.zip
    18.9 KB · Affichages: 17
  • TEST SUIVI.zip
    18.9 KB · Affichages: 16

ben.wide

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

Mon message était pas très clair
Ce que je voulais dire du coup c'est que la même réponse sortait que je cherche pour la base 1 ou la base 2, voir le fichier joint dans mon post précédent...
 

david84

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

Rebonjour, salut Tibo;)
ci-joint une possibilité que l'on peut peut-être améliorer si la piste t'intéresse.
Après, tout dépend du nombre de produits et de pays que tu as à traiter.
A+
 

Pièces jointes

  • TEST SUIVI-2.xls
    45.5 KB · Affichages: 52

ben.wide

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

Hasco c'est top comme ca... Cette option me paraît clairement la meilleure

Un petit détail : quand j'efface un produit maintenant, dans le récap le produit disparaît bien mais une ligne blanche reste... Voir tableau ci-joint pour meilleure compréhension

Et le fin du fin : ta formule spécifique ProduitsParPays où on appelle le nom de la feuille en le mettant entre " " m'a fait pensé à un truc top. J'ai remplacé dans le fichier joint dans la fonction ProduitsParPays "BASE 1" par une coordonnée de cellules, et il va donc bien chercher le nom de la feuille, et va se mettre dans la feuille en question.
Est-il possible de faire de même avec une fonction de base comme SI ? Comme ça je pourrais rajouter autant de lignes que je veux sans avoir à toucher à l'intitulé de la formule ou presque...

Merci...
 

Pièces jointes

  • TEST SUIVI.zip
    20.1 KB · Affichages: 23
  • TEST SUIVI.zip
    20.1 KB · Affichages: 23
  • TEST SUIVI.zip
    20.1 KB · Affichages: 21
G

Guest

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

Re, Ben,

J'ai remplacé dans le fichier joint dans la fonction ProduitsParPays "BASE 1" par une coordonnée de cellules

Cela ne peut fonctionner que si la cellule en question contient une chaine de caractère représentant le nom d'une feuille.

Pour le reste, à toi d'apprendre à manier VBA, avec tes cellules (nerveuses:D).

Quant à moi je pense avoir répondu largement à la question initiale.

A+ et bon courage pour ton apprentissage.
 

ben.wide

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

Il est clair que tu as plus que répondu à ma question de départ...

Pour l'histoire de la ligne blanche pouvant s'intercaler entre deux valeurs, je me suis trompé : en fait une ligne blanche se crée si je mets un pays mais pas de produits... ce qui est encore mieux parce que cela permet de pointer des erreurs.

Pour l'histoire du nom de feuille c'est pas grave ça sera top comme ca

Hésite pas à me contacter si tu passes sur Paris

A+

Benjamin
 

wahid

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

bonsoir
j'ai ajouté un botton dans un userform et je n'arrive pas a faire son code parceque je suis un debutant dans vba
pourais vous me donnés la solution
merci d'avance
Regarde la pièce jointe recherche_ville.xls
 

Pièces jointes

  • recherche_ville.xls
    186.5 KB · Affichages: 22
  • recherche_ville.xls
    186.5 KB · Affichages: 23

Discussions similaires

Réponses
8
Affichages
472
Réponses
15
Affichages
620

Statistiques des forums

Discussions
312 497
Messages
2 088 992
Membres
104 000
dernier inscrit
dinelcia