Macro ajouter données listbox dans feuille

Résolu
andy2092 Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   -  
andy2092 Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   -
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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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. andy2092 Messages postés 78 Date d'inscription   Statut Membre Dernière intervention  
       
      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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      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. andy2092 Messages postés 78 Date d'inscription   Statut Membre Dernière intervention  
       
      Parfait ! Merci beaucoup :D
      0
    4. andy2092 Messages postés 78 Date d'inscription   Statut Membre Dernière intervention   > cs_Le Pivert Messages postés 8437 Statut Contributeur
       
      Salut ! 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. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > andy2092 Messages postés 78 Date d'inscription   Statut Membre Dernière intervention  
       
      Essaie 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