ListBox à sélection multiple

ajca

XLDnaute Nouveau
Bonjour,
Pour sélectionner des joueurs pour une compétition, j'ai une ListBox à sélection multiple (limitée à 4 sélections) comprenant 20 lignes de 5 colonnes. La ListBox est remplie automatiquement par Row Source = D5:H24 de la feuille Excel.
Je n'arrive pas à copier les 4 lignes complètes sélectionnées dans les cellules "D27:H30" de la feuille Excel "Liste des joueurs", malgré toutes mes recherches.
Merci pour votre aide
ajca
 

ChTi160

XLDnaute Barbatruc
Re : ListBox à sélection multiple

Salut ajca
bienvenue
mais pourrais tu nous mettre ton fichier en pièce Jointe (sans données confidentielles ) ?
Quelques lignes suffisent .
Merci Pour eux Lol
Bonne fin de journée
 

ajca

XLDnaute Nouveau
Re : ListBox à sélection multiple

Salut ajca
bienvenue
mais pourrais tu nous mettre ton fichier en pièce Jointe (sans données confidentielles ) ?
Quelques lignes suffisent .
Merci Pour eux Lol
Bonne fin de journée

Voilà le code de ma ListBox
'limitation du nombre de sélection
Private Sub ListBox1_Change()
Static nb As Integer
Dim choisi As Integer, max As Integer
max = 4 '(nombre maxi de sélections autorisées)
choisi = ListBox1.ListIndex
If ListBox1.Selected(choisi) = False Then nb = nb - 1: Exit Sub
If nb >= max Then ListBox1.Selected(choisi) = False
nb = nb + 1
End Sub

' à partir d'ci c'est le trou !
Private Sub CommandButton1_Click()
Dim I As Integer, y As Integer
With Me.ListBox1
For I = 0 To .ListCount - 1
If .Selected(I) = True Then
y = y + 1
Range("b" & y).Value = .List(I)
End If
Next I
End With
End Sub

Bien amicalement ajca
 

ajca

XLDnaute Nouveau
Re : ListBox à sélection multiple

Merci JB,
Je vais étudier et tester le formulaire.
Bien amicalement
ajca

J'ai modifié le code comme ceci

Private Sub CommandButton1_Click()
ListBox2.Clear
k = 0
For I = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(I) = True Then
ListBox2.AddItem
ListBox2.List(k, 0) = ListBox1.List(I, 0)
ListBox2.List(k, 1) = ListBox1.List(I, 1)
k = k + 1
End If
Next I
End Sub

Bonjour JB
J'ai testé dans le formulaire le transfert de la sélection multiple dans une lisbox2 mais cela n'affiche que la 1ère colonne au lieu des 5 prévue.
Merci pour l'aide
ajca
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re : ListBox à sélection multiple

Bonjour
Bonjour le Fil
Bonjour le Forum

Arffff pas de fichier Joint !!!!!!!

je pense que dans ta procédure tu ne boucles pas sur les colonnes donc pas d'affichage
Code:
Private Sub CommandButton1_Click()
ListBox2.Clear
k = 0
For I = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(I) = True Then
ListBox2.AddItem
ListBox2.List(k, 0) = ListBox1.List(I, 0)
ListBox2.List(k, 1) = ListBox1.List(I, 1)
k = k + 1
End If
Next I
End Sub

il faut un truc du genre .

Code:
For I = 0 To ListBox1.ListCount - 1
  If ListBox1.Selected(I) = True Then
      ListBox2.AddItem
    For C=1 to ListBox1.columns.count
         ListBox2.List(K, C)= ListBox1.List(I, C)
    Next C
  End if
Next I

Non testé (pas de fichier)

Bonne Journée
Amicalement
Jean Marie
 

ChTi160

XLDnaute Barbatruc
Re : ListBox à sélection multiple

Re
Ou aussi
Code:
Private Sub CommandButton1_Click()
ListBox2.Clear
k = 0
For I = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(I) = True Then
ListBox2.AddItem ""   'Colonne 1 Vide
ListBox2.List(k, 1) = ListBox1.List(I, 0) 'Colonne 2
ListBox2.List(k, 2) = ListBox1.List(I, 1) 'Colonne 3
ListBox2.List(k, 3) = ListBox1.List(I, 2) 'Colonne 4
ListBox2.List(k, 4) = ListBox1.List(I, 3) 'Colonne 5
k = k + 1
End If
Next I

Pas evident sans fichier Lol
Bonne Journée
Amicalement
Jean Marie
End Sub
 

ajca

XLDnaute Nouveau
Re : ListBox à sélection multiple

Bonjour Jean-Marie
Merci pour l'aide je vais m'y mettre tout de suite.
Je n'ai pas joint de fichier car le fichier complet comporte un grand nombre de macros et ce problème évoqué est en fait le seul qui m'empêche de terminer le programme.
Bien amicalement
J.Claude

Jean-Marie
J'ai essayé ce programme

Private Sub CommandButton1_Click()
ListBox2.Clear
k = 0
For I = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(I) = True Then
ListBox2.AddItem
ListBox2.List(k, 0) = ListBox1.List(I, 0)
ListBox2.List(k, 1) = ListBox1.List(I, 1)
ListBox2.List(k, 2) = ListBox1.List(I, 2)
ListBox2.List(k, 3) = ListBox1.List(I, 3)
k = k + 1
End If
Next I
End Sub

Celui que tu m'as fait parvenir n'affiche que des lignes vierges.
Celui-ci un peu modifié n'affiche que la 1ère colonne (voir userform4 ci-jointe)

Le 1er code reçu précédemment bloque sur la ligne :
ListBox2.List(K, C)= ListBox1.List(I, C)

Amicalement
J.Claude
 

Pièces jointes

  • userform4.jpg
    userform4.jpg
    25.5 KB · Affichages: 71
  • userform4.jpg
    userform4.jpg
    25.5 KB · Affichages: 99
  • userform4.jpg
    userform4.jpg
    25.5 KB · Affichages: 102
Dernière édition:

ajca

XLDnaute Nouveau
Re : ListBox à sélection multiple

Merci Jean-Marie,
J'y retourne
Bon Dimanche
J.Claude

C'est pratiquement ce que je cherche, mais il manque la multisélection (j'ai sélectionné 1-fmMultiSelect de la listbox mais pourtant cela donne toujours une sélection unique).
 
Dernière édition:

ChTi160

XLDnaute Barbatruc
Re : ListBox à sélection multiple

Re
avant de partir au boulot

je pense que tu ne fais pas la bonne Manip ,car chez moi ça fonctionne ???

pour une sélection Multiple , il faut utilise la touche CTRL
puis tout en la maintenant enfoncée ,sélectionner les lignes de la ListBox.

pour .MultiSelect = fmMultiSelectExtended tu utilises de la même façon la touche MAJ (on sélectionne la premiere ligne puis ensuite on va sélectionner la dernière ligne ex pour 1 à 5 on sélectionne 1 puis touche MAJ puis la ligne 5)
bon test
Bonne journée
Amicalement
Jean Marie
 

ajca

XLDnaute Nouveau
Re : ListBox à sélection multiple

Eh oui cela fonctionne, je vais essayer d'adapter ce programme au mien et de pouvoir copier le contenu de ListBox2 dans ma feuille excel cellules "D27:H30".
Merci beaucoup Jean-Marie
Amicalemnt
J.Claude


Voilà le code utilisé et qui fonctionne (voir pièce jointe UF4)
Option Explicit

Private Sub UserForm_Initialize()
Dim L As Byte
Dim C As Byte
With UserForm4
With .ListBox2
.ColumnCount = 5
.ColumnWidths = "20;15;70;45;20"
.MultiSelect = fmMultiSelectExtended
For L = 1 To 20
.AddItem L
For C = 1 To 5
.List(.ListCount - 1, C) = C * L
Next C
Next L
End With
End With
ListBox2.Clear
End Sub

'limitation du nombre de sélection
Private Sub ListBox1_Change()
Static nb As Integer
Dim choisi As Integer, max As Integer
max = 4 '(nombre maxi de sélections autorisées)
choisi = ListBox1.ListIndex
If ListBox1.Selected(choisi) = False Then nb = nb - 1: Exit Sub
If nb >= max Then ListBox1.Selected(choisi) = False
nb = nb + 1
End Sub

Private Sub CommandButton1_Click()
Dim k As Byte
Dim I As Byte
Dim C As Byte
k = 0
With UserForm4
k = 0
For I = 0 To .ListBox1.ListCount - 1
If ListBox1.Selected(I) = True Then
With .ListBox2
.AddItem ListBox1.List(I, 0)
For C = 1 To .ColumnCount - 1
.List(k, C) = ListBox1.List(I, C)
Next C
End With
k = k + 1
End If
Next I
End With
End Sub

Private Sub Bouton_Annulation_Click()
ListBox2.Clear
End Sub


Il me reste à transférer le contenu de ListBox2 dans les cellules "D27:H30" de la feuille excel.

Merci encore pour l'aide précieuse.
Bien amicalement
J.Claude
 

Pièces jointes

  • userform4.jpg
    userform4.jpg
    31.6 KB · Affichages: 117
  • userform4.jpg
    userform4.jpg
    31.6 KB · Affichages: 125
  • userform4.jpg
    userform4.jpg
    31.6 KB · Affichages: 131
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 289
Membres
103 170
dernier inscrit
HASSEN@45