SELECTION MULTIPLLE

S

shasha

Guest
Bonsoir à tous,

Je vous souhaite une très bonne année 2005.

Comme c'est la première fois que je demande de l'aide, excusez moi si je ne suis pas assez claire.

J'ai créer un user form avec une liste à 4 colonnes avec option sélection multiple. Je suis bloquée au niveau de la récupération des info.

Je souhaiterai pouvoir ramener dans une même cellule:
1 - toutes les info d'une ligne sélectionnée avec un séparateur: pour l'instant j'y suis arrivée
Private Sub CmdOK_Click()
Dim s
s = CHROMATHEQUE.ListIndex
[C7] = CHROMATHEQUE.List(s, 0) & " / " & _
CHROMATHEQUE.List(s, 1) & " / " & _
CHROMATHEQUE.List(s, 2) & " / " & _
CHROMATHEQUE.List(s, 3)
Unload UserForm1

2- avoir un retour à la ligne dans la même cellule pour les autres lignes sélectionnées: j'y arrive pas il me ramène que la dernière ligne sélectionnée

J'ai essayé avec la synthaxe suivante mais cela ne marche pas
Private Sub CommandButton1_Click()
Dim i As Byte
Dim IndexSelected As String
For i = 0 To Me.CHROMATHEQUE.ListCount - 1
If Me.CHROMATHEQUE.Selected(i) = True Then
IndexSelected = IndexSelected & vbTab & "Index" & i & vbCrLf
End If
Next
MsgBox "Liste des Index Sélectionnés :" & vbCrLf & IndexSelected

Dim s
s = CHROMATHEQUE.ListIndex
[C7] = CHROMATHEQUE.List(s, 0) & " / " & _
CHROMATHEQUE.List(s, 1) & " / " & _
CHROMATHEQUE.List(s, 2) & " / " & _
CHROMATHEQUE.List(s, 3)
Unload UserForm1

Merci d'avance
shasha
 
O

OnErrorResumeNext

Guest
bonsoir shasha,

j'ai modifié ton code pour qu'il renvoit toutes les lignes selectionnées.
Par contre il les renvoit à la ligne et non dans la même cellule comme tu sembles le désirer.
Je vais manger et chercher. Si tu trouves avant, fais moi un coucou.

--------------------------------------------------------------------------------------
Private Sub CommandButton1_Click()

Dim i As Byte
Dim num As Byte
Dim Tblo()

For i = 0 To Me.CHROMATHEQUE.ListCount - 1
If Me.CHROMATHEQUE.Selected(i) = True Then
num = num + 1
ReDim Preserve Tblo(num)
Tblo(num) = i
End If
Next


Dim s
For i = 1 To num
Cells(6 + i, 3) = CHROMATHEQUE.List(Tblo(i), 0) & " / " & _
CHROMATHEQUE.List(Tblo(i), 1) & " / " & _
CHROMATHEQUE.List(Tblo(i), 2) & " / " & _
CHROMATHEQUE.List(Tblo(i), 3)
Next

Columns("C").AutoFit
Unload UserForm1

End Sub
----------------------------------------------------------------------------------

amicalement
 
O

OnErrorResumeNext

Guest
shasha,

peut-être comme suit :

------------------------------------------------------------------------------------
Private Sub CommandButton1_Click()
Dim i As Byte
Dim num As Byte
Dim Tblo()


For i = 0 To Me.CHROMATHEQUE.ListCount - 1
If Me.CHROMATHEQUE.Selected(i) = True Then
num = num + 1
ReDim Preserve Tblo(num)
Tblo(num) = i
End If
Next


Dim s
For i = 1 To num


[C7] = [C7] & CHROMATHEQUE.List(Tblo(i), 0) & " / " & _
CHROMATHEQUE.List(Tblo(i), 1) & " / " & _
CHROMATHEQUE.List(Tblo(i), 2) & " / " & _
CHROMATHEQUE.List(Tblo(i), 3) & Chr(10)
Next
Columns("c").AutoFit
Rows(7).AutoFit
Unload UserForm1

End Sub
--------------------------------------------------------------------------------------

bonne soirée
 
S

shasha

Guest
Bonjour,

Il faut tj faire de bonnes actions en début d'année !!

En fait j'ai encore besoin de ton aide, j'ai rajouté une liste dans mon user form.

Comment puis-je executer ton code 2 fois le but étant qu'il me renseigne 2 zones différentes avec chacune des 2 listes.

J'ai essayé cela mais cela ne marche que pour la première liste

Private Sub CommandButton1_Click()
Range("E6").Select
Selection.ClearContents
Range("E8").Select
Selection.ClearContents

Dim i As Byte
Dim num As Byte
Dim Tblo()

For i = 0 To Me.TESTSCM.ListCount - 1
If Me.TESTSCM.Selected(i) = True Then
num = num + 1
ReDim Preserve Tblo(num)
Tblo(num) = i
End If
Next

Dim s
For i = 1 To num

[E6] = [E6] & TESTSCM.List(Tblo(i), 0) & " : " & _
TESTSCM.List(Tblo(i), 1) & " - " & _
TESTSCM.List(Tblo(i), 2) & Chr(10)
Next
Columns("E").AutoFit
Rows(6).AutoFit
Rows("6:6").RowHeight = 30

Dim y As Byte
Dim num1 As Byte
Dim Tblo1()

For y = 0 To Me.TESTSST.ListCount - 1
If Me.TESTSST.Selected(i) = True Then
num1 = num1 + 1
ReDim Preserve Tblo1(num1)
Tblo1(num1) = y
End If
Next

Dim v
For y = 1 To num1

[E8] = [E8] & TESTSST.List(Tblo1(y), 0) & " : " & _
TESTSST.List(Tblo1(y), 1) & " - " & _
TESTSST.List(Tblo1(y), 2) & Chr(10)
Next
Columns("E").AutoFit
Rows(8).AutoFit
Rows("8:8").RowHeight = 30

Unload UserForm1

End Sub

merci encore
A+
shasha
 
O

OnErrorResumeNext

Guest
shasha,

dans ta deuxième boucle :
------------------------------------------------
For y = 0 To Me.TESTSST.ListCount - 1
If Me.TESTSST.Selected(i) = True Then
num1 = num1 + 1
------------------------------------------------

il faut remplacer selected(i) par selected(y) :

------------------------------------------------
For y = 0 To Me.TESTSST.ListCount - 1
If Me.TESTSST.Selected(y) = True Then
num1 = num1 + 1
------------------------------------------------

tu peux aussi supprimer Dim s et Dim v qui ne servent à rien.

bonne journée
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 779
Messages
2 092 046
Membres
105 168
dernier inscrit
makari69