Macro ajouter données listbox dans feuille

Résolu
Bonjour,

J'ai crée un formulaire avec une listbox multichoix qui contient une liste représentée dans une feuille.

Je souhaite crée un bouton sur le formulaire avec un code qui permet d'ajouter les éléments de la liste qui sont sélectionnés en insérant une ligne à chaque fois. La raison est parce que je veux ajouter les éléments sélectionnés dans une autre feuille dans un endroit spécifique sans que cela interfère avec les autres données de la feuille.

Voici une représentation de ce que je veux faire :



Quelqu'un pourrait-il m'aider ?

1 réponse

  1. Contributeur
    Bonjour,

    comme ceci:

    Dim i As Byte
    Dim val As String
    Dim myCell, ligne
    Set myCell = Application.InputBox( _
        prompt:="Sélectionnez la ligne en dessous", Type:=8)
         ligne = myCell.Row
        'boucle sur les éléments de la listbox
        For i = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(i) = True Then
            val = ListBox1.List(i)
            End If
        Next i
        If val = "" Then Exit Sub
         Rows(ligne & ":" & ligne).Select
        Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
       ActiveCell.FormulaR1C1 = val

    0
    1. Super ! Je vais utiliser ton code il est très intéressant. Merci

      Par contre en mode multi sélection il insère que la dernière sélection choisie.
      0
    2. Contributeur
      En multisélection:

      Dim i As Byte
      Dim val As String
      Dim myCell, ligne
      Set myCell = Application.InputBox( _
          prompt:="Sélectionnez la ligne en dessous", Type:=8)
           ligne = myCell.Row
          'boucle sur les éléments de la listbox
          For i = 0 To ListBox1.ListCount - 1
              If ListBox1.Selected(i) = True Then
              val = ListBox1.List(i)
              If val = "" Then Exit Sub
                Rows(ligne & ":" & ligne).Select
          Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
         ActiveCell.FormulaR1C1 = val
              End If
          Next i


      voilà
      0
    3. Parfait ! Merci beaucoup :D
      0
    4. @cs_Le PivertSalut ! Je reviens sur cette question car j'ai un petit problème. Quand j'ajoute des sélections de la listbox et que je le copie sur ma feuille, l'insertion se fait à l'envers. La dernière sélection est insérée en premier et ainsi de suite.

      Est-il possible d'insérer les sélections en ordre ?

      Merci !
      0
    5. Contributeur
      @andy2092Essaie ceci:

      Dim i As Byte
      Dim val As String
      Dim myCell, ligne
      Set myCell = Application.InputBox( _
          prompt:="Sélectionnez la ligne en dessous", Type:=8)
           ligne = myCell.Row
          'boucle sur les éléments de la listbox
          For i = 0 To ListBox1.ListCount - 1
              If ListBox1.Selected(i) = True Then
              val = ListBox1.List(i)
              If val = "" Then Exit Sub
                Rows(ligne & ":" & ligne).Select
          Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
         ActiveCell.FormulaR1C1 = val
         ligne = ligne + 1
              End If
          Next i


      @+ Le Pivert
      0