Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2702 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Désélection dans ListBox.

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Désélection dans ListBox.

n°1641768
alain_mc
Posté le 12-11-2007 à 18:18:18  profilanswer
 

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

mood
Publicité
Posté le 12-11-2007 à 18:18:18  profilanswer
 

n°1641773
devil_k
Posté le 12-11-2007 à 18:32:46  profilanswer
 

Si j'ai bien suivi, après une brève lecture
Tu pourrais faire ton cumul sur l'évènement click de ta listbox
Et dedans, si la case est sélectionnée, tu ajoutes la valeur à une variable de cumul, si elle ne l'est pas, tu ajoutes à ta variable de cumul la valeur*-1
 
C'est bien ça que tu veux ?

n°1645460
alain_mc
Posté le 19-11-2007 à 19:02:57  profilanswer
 

Merci pour la réponse. Oui et non.
 
Ok sur le principe. C'est exactement ce que je fais avec la procédure ....... _ Change. Donc que j'opte pour _Change ou _Click le résultat sera identique.
 
 
Ce qu'il me faut savoir surtout, c'est le code Vba que je dois écrire pour faire reconnaître à l'ordi que j'ai désélectionné ma ligne dans ma ListBox, avec une adresse ListBox.ListIndex qui est évidemment relative. Prenons un exemple plus simple - après je transposerai sans difficulté avec ma ListBox + complexe.
 
 
Soit une ListBox1 contenant les données d'une seule colonne. Seules trois valeurs sont contenues dans ListBox1 : soit dans l'ordre : 100, 200 et 300. Je sélectionne dans la ListBox les valeurs 200 et 300 qui apparaîssent logiqement en couleur dans ma ListBox1. Je m'assure que ces montants sont bien reconnus ce qui est le cas.
 
 
L'extrait de code simplifié ci-dessous fonctionne parfaitement :
 
 
Proc TestSélection_Change()
 
With ListBox1.ListIndex
 
For i = 0 to ListBox1.Count – 1
 
If .Selected(i) = True Then
 
Msgbox « Le montant » & ListBox1.Value & « a été sélectionné ! »
 
End if
 
Next i
 
Fin proc
 
 
Mais, et c'est là le + important pour moi, quel code complémentaire dois-je passer pour que l'ordi sache que je viens de déselectionner la valeur 200 par exemple (dont la ligne doit être impérativement considérée comme étant une adresse relative) ? En effet, dans ma ListBox1 normale, la liste évolue régulièrement et je suis amené à déselectionner n'importe quelle ligne.
 
 
Par avance merci beaucoup de votre aide.


Message édité par alain_mc le 19-11-2007 à 19:03:26

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Désélection dans ListBox.

 

Sujets relatifs
imprimer une listbox ?Changer taille, couleur, police d'un texte par listbox
empêcher la deselection dans un select multiplelistbox et lien hypertext
[Delphi] comparer deux listbox ?[VBA] Monter Descendre ListBox
Personnaliser les elements d'une combobox[!?!?] Recherche Multisites avec Listbox
listbox multiselection et formulaireje cherche à faire une listbox dynamique
Plus de sujets relatifs à : Désélection dans ListBox.


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR