Macro ajouter données listbox dans feuille

Résolu/Fermé
andy2092 Messages postés 78 Date d'inscription dimanche 13 mai 2018 Statut Membre Dernière intervention 7 février 2024 - Modifié le 17 mai 2018 à 11:39
andy2092 Messages postés 78 Date d'inscription dimanche 13 mai 2018 Statut Membre Dernière intervention 7 février 2024 - 19 juin 2018 à 14:02
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 ?
A voir également:

1 réponse

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
17 mai 2018 à 13:01
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
andy2092 Messages postés 78 Date d'inscription dimanche 13 mai 2018 Statut Membre Dernière intervention 7 février 2024
17 mai 2018 à 14:03
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
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
17 mai 2018 à 14:15
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
andy2092 Messages postés 78 Date d'inscription dimanche 13 mai 2018 Statut Membre Dernière intervention 7 février 2024
17 mai 2018 à 15:08
Parfait ! Merci beaucoup :D
0
andy2092 Messages postés 78 Date d'inscription dimanche 13 mai 2018 Statut Membre Dernière intervention 7 février 2024 > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
18 juin 2018 à 14:42
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
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > andy2092 Messages postés 78 Date d'inscription dimanche 13 mai 2018 Statut Membre Dernière intervention 7 février 2024
19 juin 2018 à 13:46
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