Salut à tous,

Ceci pourra peut-être servir à d'autres. J'ai 2 listbox dans une form et je transfert les lignes entre eux soit par un double click soit par un bouton.
Avec le bouton aucun problème. Lorsque j'utilise le double-click, le "système" perd un certains nombre d'informations.
En fait j'ai 9 colonnes dans mon listbox dont 7 sont cachées. Lors du double-click, je supprime la ligne sélectionnées et je l'envoie dans l'autre listbox. Les autres lignes "remontent d'un cran".
Lorsque je ferme la form pour continuer mon traitement, je ne récupère les informations que des 3 premières colonnes, le reste est vide.
Après de multiples tests, je me suis aperçu qu'en laissant suffisamment de temps au système pour gérer la suppression, je récupère toutes les infos.
J'ai donc ajouté une boucle à vide et ça a régler mon problème.
Étrange non?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub LBKpi_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
 
    Dim i As Double
 
    If FInterface.LBKpi.ListIndex <> -1 Then
        FInterface.LBColKpi.AddItem (FInterface.LBKpi.List(FInterface.LBKpi.ListIndex))
        FInterface.LBColKpi.List(FInterface.LBColKpi.ListCount - 1, 1) = FInterface.LBKpi.List(FInterface.LBKpi.ListIndex, 1)
        FInterface.LBColKpi.List(FInterface.LBColKpi.ListCount - 1, 2) = FInterface.LBKpi.List(FInterface.LBKpi.ListIndex, 2)
        FInterface.LBKpi.RemoveItem (FInterface.LBKpi.ListIndex)
    End If
    'Probleme lors du double-click: il faut donner le temps au système de stocker les données dans la nouvelle ligne. On boucle donc dans le vide.
    For i = 1 To 50000000
    Next i
 
End Sub