[excel] boucler sur listbox

Résolu/Fermé
ced3c Messages postés 237 Date d'inscription samedi 19 juillet 2008 Statut Membre Dernière intervention 28 mai 2016 - 8 oct. 2014 à 19:08
ced3c Messages postés 237 Date d'inscription samedi 19 juillet 2008 Statut Membre Dernière intervention 28 mai 2016 - 13 oct. 2014 à 17:28
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



A voir également:

5 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
9 oct. 2014 à 08:34
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

0
ced3c Messages postés 237 Date d'inscription samedi 19 juillet 2008 Statut Membre Dernière intervention 28 mai 2016 5
9 oct. 2014 à 17:16
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.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
9 oct. 2014 à 19:55
tu mélanges tout... TextBox et lignes sélectionnées + listbox, je ne comprend pas...
0
ced3c Messages postés 237 Date d'inscription samedi 19 juillet 2008 Statut Membre Dernière intervention 28 mai 2016 5
9 oct. 2014 à 22:30
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
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
13 oct. 2014 à 08:38
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?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
13 oct. 2014 à 08:51
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

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ced3c Messages postés 237 Date d'inscription samedi 19 juillet 2008 Statut Membre Dernière intervention 28 mai 2016 5
13 oct. 2014 à 17:28
Encore une fois un grand merci Pijaku, c'est exactement ce que je voulais faire.
0