Alimenter une textbox à partir d'une liste box à choix multiples

Résolu
Kayna.86 Messages postés 42 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,

La débutante que je suis sollicte votre aide si précieuse. Je vous explique mon problème:

Sur un userform, j'ai une listbox à choix multiples et une textbox.
Je souhaiterais que les différents éléments sélectionnés dans ma listbox se reportent automatiquement dans la textbox.
J'ai parcouru de nombreux forums à ce sujet à partir desquels j'ai puisé quelques idées.
Malheureusement mon code, qui est pourtant assez simple, ne fonctionne pas, et je ne comprends pas pourquoi. La macro s'execute sans problème (pas de message d'erreur ou de "debugage" nécessaire). En revanche, quand le userform s'affiche et que j'effectue mes seletions, il ne passe rien: la textbox reste vide.

Voici les lignes de codes question:

Private Sub ListBox1_Click()
Dim i As Integer
For i = 0 To ListBox1.ListCount - 1
If ListBox.Selected(i) Then
TextBox1.Value = ListBox(i)
Next i
End Sub

Une âme charitable pourrait-elle m'aider à comprendre pourquoi il ne se passe rien?

4 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Essaye en utilisant l'événement Change de la listbox au lieu de Click
    0
  2. Kayna.86 Messages postés 42 Statut Membre 5
     
    Bonjour pijaku,

    merci! ca fonctionne déjà un peu mieux avec l'événement change. En revanche, j'ai un autre problème maintenant. le textbox n'affiche qu'une seule valeur. Dès que je sélectionne un élement supplémentaire dans ma listbox1, le valeur renseignée dans la textbox ext systématiquement remplacée par la nouvelle sélection. or je voudrais que toutes les valeurs sélectionnées dans la listbox se reporte dans la textbox.
    Aurais-tu une idée pour résoudre ce problème? ( Ou quelqu'un d'autre bien sûr)

    J'ai tenté le code suivant, mais manifestment la syntaxe "TextBox1.Value(J) =
    ListBox1.List(i)" n'est pas bonne:

    Private Sub ListBox1_change()
    Dim i As Integer
    For i = 0 To ListBox1.ListCount - 1
    For J = 0 To ListBox1.ListCount - 1
    If ListBox1.Selected(i) Then
    TextBox1.Value(J) = ListBox1.List(i)
    End If
    Next J
    Next i
    End Sub
    0
  3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Ah oui en effet, ça ne fonctionne pas comme cela.

    Perso, je passerai par une variable de type string (chaine de caractères) intermédiaire.
    J'y stockerai toutes les valeurs sélectionnées de la Listbox et après la boucle, j'inscris dans le textbox le contenu de ma variable.

    Ca donne :
    Private Sub ListBox1_Change()
    Dim i As Integer, Texto As String
    
    Texto = ""
    For i = 0 To ListBox1.ListCount - 1
        If ListBox1.Selected(i) Then
            Texto = Texto & ListBox1.List(i)
        End If
    Next i
    TextBox1.Value = Texto
    End Sub

    0
  4. Kayna.86 Messages postés 42 Statut Membre 5
     
    Merci pijaku,

    C'est parfait! :-)

    Bonne fin de journée!

    Kayna.
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      de rien.
      Bonne fin de journée à toi aussi.
      A+
      0