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

Bonjour Ben.wide et bienvenue sur le forum,

Pour coller en colonne à partir de la cellule active:

Code:
[COLOR=BLUE]Private[/COLOR] [COLOR=BLUE]Sub[/COLOR] CommandButton1_Click()
[COLOR=BLUE]Dim[/COLOR] I [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]Integer[/COLOR], y [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]Integer[/COLOR]
    [COLOR=BLUE]With[/COLOR] [COLOR=BLUE]Me[/COLOR].ListBox1
        [COLOR=BLUE]For[/COLOR] I = 0 To .ListCount - 1
            [COLOR=BLUE]If[/COLOR] .Selected(I) = [COLOR=BLUE]True[/COLOR] [COLOR=BLUE]Then[/COLOR]
                ActiveCell.Offset(, y).Value = .List(I)
                y = y + 1
            [COLOR=BLUE]End[/COLOR] [COLOR=BLUE]If[/COLOR]
        [COLOR=BLUE]Next[/COLOR] I
    [COLOR=BLUE]End[/COLOR] [COLOR=BLUE]With[/COLOR]
[COLOR=BLUE]End[/COLOR] [COLOR=BLUE]Sub[/COLOR]

Pour coller en Ligne remplacer
Code:
ActiveCell.Offset(, y).Value = .List(I)
Par
Code:
ActiveCell.Offset( y).Value = .List(I)

A+
 

ben.wide

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

Merci pour le retour rapide

Par contre cela ne se colle pas dans la même case, mais toujours en colonne.

Voici ma fonction maintenant donc :


Private Sub CommandButton1_Click()
Dim I As Integer, y As Integer
With Me.ListBox1
For I = 0 To .ListCount - 1
If .Selected(I) = True Then
ActiveCell.Offset(y).Value = .List(I)
y = y + 1
End If
Next I
End With
End Sub


Comment faire pour le coller dans la même case ? Dans l'idéal avec un retour à la ligne ?

Dernière chose, et je réalise plutôt complexe :
J'aurais besoin après de faire un récap, avec une fonctionne type NB.SI, où il me dirait que tel donnée serait lier à X pays, sachant donc que tous les pays seraient dans la même case.
Exemple : une case pays FRANCE, j'aimerais trouver une fonction qui arrive à détecter le mot FRANCE uniquement une plage de cellule, où l'une d'entre elles pourrait contenir plusieurs noms de pays dont le nom FRANCE...

Complexe je suppose, et cela mérite peut-être un poste en soit...

Merci en tout cas !

Benjamin
 
G

Guest

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

Re,

Code:
Private Sub CommandButton1_Click()
Dim I As Integer, y As Integer
Dim Txt as string
With Me.ListBox1
For I = 0 To .ListCount - 1
If .Selected(I) = True Then
Txt=Txt &  .List(I)
y = y + 1
End If
Next I
End With
Activecell.value=Txt
End Sub
Si tu veux des retours à la ligne:
Code:
Txt=Txt & .list(I) & Chr(10)

Et Ensuite:
Code:
ActiveCell=Left(Txt,Len(Txt) -1)

Pour le reste on verra plus tard à moins que quelqu'un d'autre ne réponde.
J'arrête pour aujourd'hui.

A+
 

ben.wide

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

Ok merci c'est top ça fonctionne !

Manque plus que la question de la recherche et je serais bon... Je vais m'y pencher aujourd'hui, si tu penses à quelque chose je suis bien sûr tout à ton écoute...

Merci encore

Benjamin
 
G

Guest

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

bonjour Ben,

Code:
=NB.SI(D12:H12;"[COLOR=red][B]*[/B][/COLOR]France[COLOR=red][B]*[/B][/COLOR]")

Fin de la procédure précédente pour plus de sûreté:
Code:
    If InStr(1, Txt, Chr(10)) > 0 Then
        ActiveCell.Value = Left(Txt, Len(Txt) - 1)
    End If

A+
 

ben.wide

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

Merci Hasco, je ne connaissais pas l'utilisation de l'astérique *, et je suis vraiment de plus en plus fan d'excel...

2 choses pour terminer :
- il faudrait que le critère de Nb.si renvoie vers une case où serait inscrit le nom du pays, donc à la place de "*France*", mettre *D20* par exemple, sauf que les astérisques ne semblent pas marcher dans ce cas...
- je n'arrive pas à implémenter ta nouvelle ligne qui permet de sécuriser le code (en quoi d'ailleurs, si tu as le temps de me l'expliquer simplement ?)

Voici mon code :


Private Sub CommandButton1_Click()
Dim I As Integer, y As Integer
Dim Txt As String
With Me.ListBox1
For I = 0 To .ListCount - 1
If .Selected(I) = True Then
Txt = Txt & .List(I) & Chr(10)
ActiveCell = Left(Txt, Len(Txt) - 1)
y = y + 1
End If
Next I
End With
ActiveCell.Value = Txt
End Sub

Où est-ce que je dois rentrer le nouveau If ? J'ai mis ton bout de code juste avant le End If, en enlevant donc le End If qu'il y avait dans ta partie...

Merci vraiment en tout cas

Ben
 
G

Guest

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

Re,

Pour la nouvelle ligne de code:

Code:
Private Sub CommandButton1_Click()
    Dim I As Integer, y As Integer
    Dim Txt As String
    With Me.ListBox1
        For I = 0 To .ListCount - 1
            If .Selected(I) = True Then
                Txt = Txt & .List(I) & Chr(10)
                y = y + 1
            End If
        Next I
    End With
    If InStr(1, Txt, Chr(10)) > 0 Then
        ActiveCell.Value = Left(Txt, Len(Txt) - 1)
    End If
End Sub

Au cas où aucun choix n'aurait été fait sur le click du bouton la variable txt vaudrait "" et Left(Txt, Len(Txt) - 1) lèverait une erreur.

Pour le reste, je ne vois pas trop où tu veux en venir. Il serait mieux de joindre un fichier avec l'exemple de ce que tu souhaites obtenir par formule. Sinon recherche du côté de la fonction EQUIV qui renverra un numéro d'ordre de la première cellule correspondante.

A+
 

ben.wide

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

Ok merci c'est bien noté

Ci-joint le fichier en question, j'espère que cela sera assez parlant...
 

Pièces jointes

  • Choisir Pays.xls
    47.5 KB · Affichages: 199
  • Choisir Pays.xls
    47.5 KB · Affichages: 219
  • Choisir Pays.xls
    47.5 KB · Affichages: 207

ben.wide

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

Petite question pour la forme :

Est-ce que c'est réellement dangereux sur la sécurité des macros de les laisser tout le temps activer ?
Ca faciliterait l'ouverture du doc...
 
G

Guest

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

Re,

Je suppose que tu parles des options de sécurités des macros?

Si c'est le cas, en mettant à moyenne, le niveau de sécurité c'est un bon compromis.

En autorisant systématiquement toutes les macros, il te faudrait redoubler de vigilance concernant la provenance des fichiers ouverts. Si tu en récupère sur internet, aïe, aïe le risque est important.

A+
 

ben.wide

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

Une petite question, j'aurais aimé ajouter une fonction à ce tableau... (j'abuse peut-être un peu de ta disponibilité, si c'est le cas n'hésite pas à me le dire)

Pour que ce soit plus clair je joins le tableau

En gros :

Sur l'onglet récap, et grâce à toi, je peux effectivement lister les pays qui ont été rentrés par clients
Je voudrais être en mesure de mettre en plus, dans cet onglet, dans une même case les produits qui ont été vendus à ce territoire. Donc que dans la même case apparaisse pour l'exemple, pour AUSTRIA, FRUITS VIANDES et LEGUMES, les uns en face des autres.
J'ai pensé à passer par NB.SI, mais cela me paraît un peu limité...

Merci en tout cas pour ton attention
 

ben.wide

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

Oups ! Ma pièce jointe est pas passé, la voici...
 

Pièces jointes

  • TEST SUIVI.xls
    47.5 KB · Affichages: 172
  • TEST SUIVI.xls
    47.5 KB · Affichages: 188
  • TEST SUIVI.xls
    47.5 KB · Affichages: 187

Discussions similaires

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

Statistiques des forums

Discussions
312 497
Messages
2 088 984
Membres
103 998
dernier inscrit
Gotteland