Listbox multiselect qui renvoie les données aux lignes sélectionnées

frtoussaint

XLDnaute Nouveau
Bonjour à tous,

J'essaie aujourd'hui d'importer dans ma feuille les données d'un userform dont les lignes sont numérotées de 1 à 600.

Dans mon formulaire, j'ai une listbox multiselect qui indique les numéro 1 à 600 encore 'disponibles', c'est à dire en face desquels il n'y a pas encore d'écriture.

Lorsque je valide mon userform (avec juste des textbox), j'aimerais que mes données soient importées dans la feuille dans les lignes correspondant aux chiffres que j'aurais choisis dans ma listbox.

Exemple.
Les lignes 1 à 10 sont déjà remplies. Lorsque j'ouvre mon userform, la listbox me dit qu'il me reste les lignes 11 à 600. Je remplis mes textbox avec mes données et je clique dans la listbox les lignes 15, 16 et 17. Je valide et mes données vont se copier dans les lignes 15, 16 et 17 (les même données dans les 3 lignes). Lorsque je ré-ouvre ensuite mon userform la fois d'après, ma list box m'indique que j'ai les lignes 11 à 14 et 18 à 600 qui sont disponibles.

J'avoue que les idées que j'ai eu n'ont pas marché... et je suis preneur si quelqu'un sait comment faire. Ci joint mon fichier exemple.

Merci d'avance!
François
 

Pièces jointes

  • MultiSelect.zip
    24.8 KB · Affichages: 98

kiki29

XLDnaute Barbatruc
Re : Listbox multiselect qui renvoie les données aux lignes sélectionnées

Salut, un début de réponse
Code:
Dim j As Integer
    For j = 0 To UsfNew.ListBoxNum.ListCount - 1
        If UsfNew.ListBoxNum.Selected(j) Then
            .....
	    affectation en fonction de UsfNew.ListBoxNum.List(j)
	    .....
        End If
    Next j
 

kiki29

XLDnaute Barbatruc
Re : Listbox multiselect qui renvoie les données aux lignes sélectionnées

re, à toi de poursuivre
Code:
Option Explicit

Private Sub AjouterClient_Click()
Dim i As Integer
Dim k As Long

    With UsfNew
        If Len(.txtNom) = 0 Then
            .txtNom.SetFocus
            MsgBox "Nom Prénom vide", vbOKOnly + vbInformation, "Saisie"
            Exit Sub
        End If
        If Len(.txtCompagnie) = 0 Then
            .txtCompagnie.SetFocus
            MsgBox "Compagnie vide", vbOKOnly + vbInformation, "Saisie"
            Exit Sub
        End If
        '   ...... etc
    End With
    
    For i = 0 To UsfNew.ListBoxNum.ListCount - 1
        If UsfNew.ListBoxNum.Selected(i) Then
            k = UsfNew.ListBoxNum.List(i)
            With ShListe
                .Cells(k + 2, 3) = UsfNew.txtNom
                .Cells(k + 2, 4) = UsfNew.txtCompagnie
                '   ..... etc
            End With
        End If
    Next i
    MajListBoxNum
End Sub

Private Sub MajListBoxNum()
Dim i As Long
Dim LastRow As Long

    With ShListe
        With UsfNew
            .ListBoxNum.Visible = False
            .ListBoxNum.Clear
        End With
        LastRow = .Range("A" & Rows.Count).End(xlUp).Row
        For i = 3 To LastRow
            If .Cells(i, 2) <> "a" Then
                UsfNew.ListBoxNum.AddItem .Cells(i, 1)
            End If
        Next i
        UsfNew.ListBoxNum.Visible = True
    End With
End Sub

Private Sub UserForm_Initialize()
Dim i As Integer
Dim LastRow As Long

    With ShListe
        LastRow = .Range("A" & Rows.Count).End(xlUp).Row
        For i = 3 To LastRow
            If .Cells(i, 2) <> "a" Then
                UsfNew.ListBoxNum.AddItem .Cells(i, 1)
            End If
        Next i
    End With
End Sub
 
Dernière édition:

Statistiques des forums

Discussions
312 360
Messages
2 087 592
Membres
103 604
dernier inscrit
CAROETALEX59