rvblog
Messages postés
792
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
7
27 mars 2006 à 23:34
Salut ccir, salut julien,
je viens pour la cause perdue, Victor le Nettoyeur était pas dispo :)
le problème est que le ListBox.ListCount est un Integer, dommage !
on pourrait toujours écrire :
Private Sub Command2_Click()
Dim i As Long
For i = 0 To 200000
If List1.Selected(i) = True Then
List1.RemoveItem (i)
End If
List1.Refresh
Next i
End Sub
mais ListBox.Selected attend un argument de type Integer,
et puis le ListIndex est de type Integer,
en fait, le ListBox est fait pour travailler avec des Integer,
ça se voit dans AddItem, qui attend un argument Index de type Integer encore dommage!
Ben alors! la solution de la cause perdue?
On utilise un ListView (Microsoft Windows Common Controls 6.0), en plus, il recèle de fonctionnalités plus intéressantes les une que les autres (icones, vues différentes, colonnes, drag'n drop, node check,...), c'est un des composants utilisé par l'Explorer (c'est peu dire).
Private Sub Form_Load()
With Me.ListView1
'autorise la multi-sélection
.MultiSelect = True
'vue de type Détails
.View = lvwReport
'ajoute une colonne
.ColumnHeaders.Add , , "Eléments"
End With
End Sub
Private Sub Command1_Click()
Dim i As Long
With Me
With .ListView1
'cache la liste
.Visible = False
'vide la liste
.ListItems.Clear
'de 1 à 200000
For i = 1 To 200000
DoEvents
'ajoute un élément
.ListItems.Add i, , "Elément " & i
Next i
End With
'affiche le compte
.Text1.Text = .ListView1.ListItems.Count
DoEvents
'affiche la liste
.ListView1.Visible = True
End With
End Sub
Private Sub Command2_Click()
Dim liTemp As ListItem
Dim m_Col As Collection
Set m_Col = New Collection
With Me.ListView1
'pour chaque élément de la liste
For Each liTemp In .ListItems
's'il est seléctionné
If liTemp.Selected Then
'mémorise l'élément courant
'on ne peut pas le supprimer ici
m_Col.Add liTemp, CStr(.ListItems.Count - liTemp.Index)
End If
Next liTemp
'pour chaque élément mémorisé
For Each liTemp In m_Col
'le supprime
.ListItems.Remove liTemp.Index
Next liTemp
End With
End Sub
Merci d'appuyer sur Accepter la réponse, si elle te plaît (si et seulement si),
ça peut aider les prochains qui rencontre le même problème, et qui trouveront une réponse déjà testée et validée par toi.
Voilà, à +,
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais
</SUP>