VBA_Liste a choix multiples

Fermé
anais - 28 déc. 2007 à 19:24
 néné - 1 janv. 2008 à 11:49
Bonjour,

Je suis en train de travailler sur VBA, et dans un formulaire, j'ai cree une liste a choix multiple.

Le probleme, c'est que quand j'execute ma macro, elle ne me retient que la derniere valeur selectionne, alors que j'aurais besoin que toutes les valeurs selectionnees soient prises en compte.

Pourriez vous me donner un coup de main?

Merci,
anais

2 réponses

help....
0
bjr


voici des codes a adapter

Private Sub CmdOK_Click()
Unload UserForm1
Dim Tblo()
Dim A As Integer
Dim B As Integer
Dim T As Integer

With Me.ListBox1
'Déterminer le nombre d'items choisis
For A = 0 To .ListCount - 1
If .Selected(A) Then
T = T + 1
End If
Next A

'Si aucun élément sélectionné , fin de la procédure
If T = 0 Then Exit Sub

'Dimensionnement du tableau
'Avec preserve on ne peut redimensionner que
'la dernière dimension d'un tableau
'de façon dynamique -> raison du décompte(partie1)

ReDim Preserve Tblo(1 To T)
'valeur sélectionnée mise dans le tableau
For A = 0 To .ListCount - 1
If .Selected(A) Then
B = B + 1
Tblo(B) = .List(A, 0)
'le 0 indique que l'item est dans la première colonne de la liste
'dans cet exemple il n'y a qu'une colonne
End If
Next A
End With
'Copie le tableau à partir de B16 = cells(16,2)
Range(Cells(16, 2), Cells(16 + UBound(Tblo) - 1, 2)) = Application.Transpose(Tblo)
' Attention aux index qui commencent à 0 et non pas à 1... !
' NB subtilité des array... : un tableau à une dimension s'inscrit sur
'une ligne... il faut donc utiliser transpose pour obtenir le résultat
'en colonne.

'Libère la mémoire
Erase Tblo

End Sub

Private Sub UserForm_Initialize()
Range("B16:B26").ClearContents 'efface la plage résultats
ListBox1.RowSource = "liste1!liste"
ListBox1.ListIndex = -1
End Sub
0