[vba,excel2010] Valeur dans listform

Bonjour,

je suis un peu perdu, j'essaye en vain depuis hier d'afficher les lignes sélectionné de ma listbox sur une cellule Excel sans arriver à un quelconque résultat(je suis sous userform)... Si quelqu'un veut bien m'aider.

Private Sub ListBox1_Click()
Dim test as string
for i = 0 to 5
if listbox1.selected(i) = true then text=text &";"&listbox1.list(i)
next i

sheets ("feuill3").range("i1")=mid$(text,3,len(text)

End sub

6 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    l'evenement click (entre-autres) ne marche pas sur une listebox multiselect, il l'evenement d'un autre controle ou vous mettrez votre code.

    Bonne suite
    1. Rien à faire ce code fonctionne nul part...

      Du coup j'en ai refais un autre qui fonctionne partiellement.

      Dim lItem As Long

      For lItem = 0 To ListBox1.ListCount - 1

      If ListBox1.Selected(lItem) = True Then

      Sheet2.Range("A65536").End(xlUp)(2, 1) = ListBox1.List(lItem)

      ListBox1.Selected(lItem) = False
      End If

      Next

      End Sub

      Ici en Colonne A j'ai bien les réponses qui apparaissent dans les premières lignes. Mais je n'arrive pas à préciser que les réponses apparaissent en Colonne I ligne 24 par exemple.
      Il me manque qqchose... Un coup de main, si une âme généreuse se penche ici ;).
      1. Bonjour,

        Sub test()
            Dim lItem As Long
        
            For lItem = 0 To ListBox1.ListCount - 1
        
                If ListBox1.Selected(lItem) = True Then
                    'derniere cellule non vide colonne I
                    derlig = Range("i" & Rows.Count).End(xlUp).Row
                    'test si debut de liste
                    If derlig < 24 Then
                        derlig = 24
                    Else
                        derlig = derlig + 1
                    End If
                    'ecriture a partir de I24 et apres
                    Worksheets("feuil2").Range("A65536").End(xlUp)(derlig, 9) = ListBox1.List(lItem)
                    ListBox1.Selected(lItem) = False
                End If
        
            Next lItem
        End Sub


        Bon courage
        1. J'ai testé, ça ne fonctionne pas très bien. Je n'ai plus qu'une seule réponse qui apparait alors que ma listbox est en Multiselect.

          Ensuite l'instruction suivante:
          Worksheets("feuil2").Range("A65536").End(xlUp)(derlig, 9) = ListBox1.List(lItem)

          C'est le 9 qui indique dans quelle colonne va attérir mon résultat et non le "i" de derlig.

          Private Sub CommandButton4_Click()
          Dim lItem As Long

          For lItem = 0 To ListBox1.ListCount - 1

          If ListBox1.Selected(lItem) = True Then
          'derniere cellule non vide colonne G
          derlig = Range("C" & Rows.Count).End(xlUp).Row
          'test si debut de liste
          If derlig < 27 Then
          derlig = 27
          Else
          derlig = derlig + 1
          End If
          'ecriture a partir de c27 et apres
          Worksheets("Réponses sondages").Range("A65536").End(xlUp)(derlig, 3) = ListBox1.List(lItem)
          ListBox1.Selected(lItem) = False
          End If

          Next lItem
          End Sub

          J'ai testé et quelque soit la lettre que l'on met dans derlig, ça ne change rien. Et les résultats m'apparaissent dans la cellule 74. Là j'avoue, je ne comprends pas pk.
          1. Par contre toutes les réponses sélectionnées apparaissent bien je corrige, mais avec un écart de 47 cellules entre chaque réponse. Là je comprends pas du tout.
            1. Bonjour,

              C'est le 9 qui indique dans quelle colonne va attérir mon résultat et non le "i" de derlig. i est la neuvieme colonne (A-1,B-2 etc.......)

              'ecriture a partir de c27 et apres faudrait savoir si c'est en colonne I ou C que vous voulez ecrire (dans votre question de depart c'etait I, apres A et enfin C)

              résultats m'apparaissent dans la cellule 74 il faut soit definir la plage ou ecrire vos choix, soit ne rien ecrire dans cette colonne en dessous des ecriture de choix possible.

              A+