[excel] boucler sur listbox

Résolu
Bonjour à tous,

J'ai une listbox de 5 colonnes multisélection qui affiche une plage de cellule de la feuille "Cheques" (A3:E)
Dans un textbox "TB_num_remise" j'inscrit un nombre.

En sélectionnant une ligne de ma listbox j'aimerai inscrire la valeur de mon textbox dans la colonne "E" de ma feuille au niveau de la ligne sélectionnée.

Pour l'instant j'arrive à le faire en sélectionnant une seule ligne avec ceci:

[Cheques!E3].Offset(Me.ListBox1.ListIndex).Value = TB_num_remise.Value


Par contre je ne sais pas comment le faire en sélectionnant plusieurs lignes dans ma listbox

Merci d'avance

5 réponses

  1. Encore une fois un grand merci Pijaku, c'est exactement ce que je voulais faire.
    1. Modérateur
      Voici ton code :

      Private Sub Cmd_remise_Click()
          
          'Si rien n'a été saisi dans le textbox : message + sortie
          If TB_num_remise = "" Then MsgBox "Saisie obligatoire du numéro de remise.", vbCritical: Exit Sub
          
          'boucle sur toutes les lignes de la listbox
          For i = 0 To ListBox1.ListCount - 1
              'si la ligne est sélectionnée
              If ListBox1.Selected(i) = True Then
                  'affectation de la valeur de la textbox dans la colonne "E" correspondant a la ligne de la listbox
                  Sheets("Cheques").Range("E" & i + 3) = TB_num_remise
              End If
          Next i
          
          'Rechargement de la listbox pour afficher les changements
          With Sheets("Cheques")
              Me.ListBox1.List = .Range("A3:E" & .[B65000].End(xlUp).Row()).Value
          End With
          
          'Format euros sur la 3eme colonne de la listbox
          For i = 0 To ListBox1.ListCount - 1
            ListBox1.List(i, 2) = Format(ListBox1.List(i, 2), "0.00 €")
          Next i
      End Sub
      

      1. Désolé il est vrai que je ne dois pas être très clair
        Je peux joindre le fichier qui j'espère sera plus clair

        https://www.cjoint.com/?0JjwGYBPHYQ

        C'est dans l'onglet "Remise de chèques"
        J'aimerai sélectionner plusieurs lignes dans la listbox et leur donner la valeur de la textbox

        Merci pour votre patiente
        1. Modérateur
          Salut,

          Si j'ai bien compris....
          Dans l'UserForm Usf_main, Onglet "Remise de chèques", tu inscris une valeur dans le textbox TB_num_remise, sélectionnes plusieurs lignes dans la listbox1 et, en cliquant sur le bouton valider, tu souhaites que la colonne 5 (N° de remise) des lignes sélectionnées se voient attribuer la valeur que tu as saisi dans le textbox.
          C'est bien ça?
      2. Bonjour et merci encore une fois pijaku de prendre le temps de m'aider.

        Ce que je cherche est d'envoyer la valeur contenue dans le textbox dans la colonne "E" de la feuille "Cheques" des lignes sélectionneées.
        Je n'y arrive pour le moment qu'en sélectionnant une seule ligne avec ceci

        [Cheques!E3].Offset(Me.ListBox1.ListIndex).Value = TB_num_remise.Value


        J'aimerai faire la même chose mais pour toutes les lignes sélectionnées si possible.
        Je ne sais pas comment adapter votre code au mien.
        1. Modérateur
          tu mélanges tout... TextBox et lignes sélectionnées + listbox, je ne comprend pas...
      3. Modérateur
        Bonjour,

        Pour boucler sur une listBox et récupérer les lignes sélectionnées :
        For i = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(i) = True Then 
                MsgBox ListBox1.List(i) & " est situé à la ligne " & i + 1
            End If
        Next i