Salut
Méthode propre pour insérer des Items et des SubItems dans une ListView :
La première colonne est l'Item principal.
Les colonnes suivantes sont des SubItems. Ils sont indexés et appartiennent à l'Item.
On définit (soit par config, soit par code comme ici) le nombre de SubItems en définissant les Columns, la première étant l'Item, les suivantes, les SubItems.
Exemple d'utilisation propre :
' Définition des colonnes :
With maListView1
.ColumnHeaders.Clear
.ColumnHeaders.Add 1, , "Item"
.ColumnHeaders.Add 2, , "Sub 1"
.ColumnHeaders.Add 3, , "Sub 2"
.ColumnHeaders.Add 4, , "Sub 3"
End With
Dim monItem As ListItem
' Insertion d'un Item
Set monItem = maListView1.ListItems.Add(, , "Item 1")
' Remplissage des SubItems
monItem.SubItems(1) = "Item 1, SubItem 1"
monItem.SubItems(2) = "Item 1, SubItem 2"
monItem.SubItems(3) = "Item 1, SubItem 3"
' Item suivant
Set monItem = maListView1.ListItems.Add(, , "Item 2")
monItem.SubItems(1) = "Item 2, SubItem 1"
monItem.SubItems(2) = "Item 2, SubItem 2"
monItem.SubItems(3) = "Item 2, SubItem 3"
' Etc
Donc, pour énumérer les SubItems d'un Item, il faut d'abord pointer vers l'Item
' Exemple pour lister tous les SubItems 1 de notre LV
Dim r As Long
For r = 1 To maListView1.ListItems.Count
Debug.Print maListView1.ListItems(r).SubItems(1)
Next r
Dans ton cas, il te faudra :
- Lister chaque Item de ta LV2 = Boucle For-Next
- Pour chaque Item, rechercher dans la LV1 si l'Item existe = Une nouvelle boucle à faire, à l'intérieur de la première
- Quand tu l'auras trouvé, recopier le SubItem(1) de l'Item de LV2 vers le SubItem(2) de l'Item de LV1
Dim bTrouvé As Boolean
For
bTrouvé = False
For
If ItemDeLV2 = ItemDeLV1 Then
SubItem(2) de ItemDeLV1 = SubItem(1) de ItemDeLV2
bTrouvé = True
' On suppose qu'il n'y a qu'un Item concerné par référence
Exit For ' on sort de la dernière boucle
End If
Next
If Not bTrouvé Then
' Pas trouvé l'ItemDeLV2 dans la LV1
End If
Next
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)