Principe : J’ai créé = une ListBox « LbOpsBancaires » comprenant plusieurs colonnes que je charge sans difficulté à partir d’une base de données dont le volume évolue. Mon concept : Par la procédure LbOpsBancaires _Change(), après avoir activé le choix Multi sélection, chaque fois que je clique sur une ligne de la ListeBox, j’envoie automatiquement les euros dans une deuxième ListBoxCalcul qui fait office de calculette et cumule tous les montants à chaque sélection d’une ligne.
Prenons le cas d’une ligne quelconque de LbOpsBancaires où, après sélection, le montant de +25 euros qui lui correspond est transféré dans la ListBoxCaclul (aucun problème tout fonctionne !).
En revanche, si je désélectionne ma ligne contenant les +25 euros, pour annuler mon premier transfert de +25 euros, il faut donc que la nouvelle valeur transférée dans la ListBoxCalcul soit de -25 euros. Dans mon cas, en déselectionnant, ma valeur rentre avec les autres entrées dans ListBoxCalcul mais avec la valeur +25 euros.
Comment faire donc pour qu’en déselectionnant une ligne le signe du montant à transférer dans la calculette soit obligatoirement l’inverse. Exemple : Une ligne sélectionnée contenant dans la colonne 4 +25.00 doit devenir -25.00 en la désélectionnant. Inversement, une ligne désélectionnée contenant dans la colonne 4 +25.00 doit devenir -25.00 avant l’exportation vers ListBoxCalcul.
Merci de m’éclairer sur le code relatif à la prise en compte de la désélection.
L’extrait de mon code est la suivant :
Private Sub LbOpsBancaires_Change()
If ObLbMultiSel Then
For i = 0 To LbOpsBancaires.ListCount - 1
If LbOpsBancaires.Selected(i) Then
MsgBox (LbOpsBancaires.Column(4, LbOpsBancaires.ListIndex))
'4 correspond au champ "Montant" de la ListBox LbOpsBancaires.
**** Pour mémoire mon code de transfert dans ListBoxCalcul qui
**** fonctionne parfaitement.
End If
Next i
End If
End Sub