Résolu VB.net : Comment obtenir la somme de plusieurs colonnes dans Listview

Solutions (6)
Tags :
  • Desire
  • Programmation
|
Bonjour,

J'ai un comboBox et 4 Textbox qui sont envoyés dans mon listview par un bouton, de cette manière.


  1. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  2.  
  3. 'Listview configuration
  4.  
  5.  
  6.  
  7. ListView1.View = View.Details
  8. ListView1.FullRowSelect = True
  9. ListView1.GridLines = True
  10. ListView1.Columns.Add("col1", 330, HorizontalAlignment.Center)
  11. ListView1.Columns.Add("col2", 60, HorizontalAlignment.Center)
  12. ListView1.Columns.Add("col3", 60, HorizontalAlignment.Center)
  13. ListView1.Columns.Add("col4", 60, HorizontalAlignment.Center)
  14. ListView1.Columns.Add("col5", 60, HorizontalAlignment.Center)



  1. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
  2.  
  3. ' Affectation des données dans listview
  4.  
  5. Dim liste As New ListViewItem
  6.  
  7. If ComboBox2.Text <> Nothing Or TextBox2.Text <> Nothing Or TextBox3.Text <> Nothing Or TextBox4.Text <> Nothing Or TextBox5.Text <> Nothing Then
  8.  
  9. liste.Text = ComboBox2.Text.ToString
  10. liste.SubItems.Add(TextBox2.Text.ToString)
  11. liste.SubItems.Add(TextBox3.Text.ToString)
  12. liste.SubItems.Add(TextBox4.Text.ToString)
  13. liste.SubItems.Add(TextBox5.Text.ToString)
  14. ListView1.Items.Add(liste)
  15.  
  16. End If



Maintenant, je désire additionner les colonnes de mon listview correspondant à Textbox2, Textbox3, Textbox4, Textbox5 et ainsi que les sommes soient dirigés automatiquement vers 4 autres Textbox.

En schématisant grossièrement :

  1. papates = 5 4 6 7
  2. Biscottes = 7 4 5 6
  3. total = 12 8 11 13



Mais cela fait deux jours que je suis bloqué à ce stade.. :sweat: 


Merci de votre aide !
Contenus similaires
Meilleure solution
partage
, Modérateur |
C'est parce que tu convertis la valeur en entier avec la méthode CInt.
Donc, 0,4 + 0,4 + 0,4 = CInt(0,4) + CInt(0,4) + CInt(0,4) = 0 + 0 + 0 = 0

Utilise CDbl plutôt.


Edit: et au passage, tu n'as pas besoin de faire 4 fois la même boucle, ne fait qu'une seule boucle pour calculer les 4 totaux.
  • Commenter cette solution |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par jonathan_61.
  • Commenter cette réponse |
Score
0
òh
òi
|
Impeccable ça fonctionne nickel.

Merci Omar
  1. '-------------CALCUL TOTAL DES SOMMES COLONNES LISVIEW--------------
  2.  
  3.  
  4. Dim ColonneTotal As Double = 0
  5. Dim colonneTotal1 As Double = 0
  6. Dim ColonneTotal2 As Double = 0
  7. Dim ColonneTotal3 As Double = 0
  8.  
  9. For Each item As ListViewItem In ListView1.Items
  10. ColonneTotal += CDbl(item.SubItems(4).Text)
  11. ColonneTotal1 += CDbl(item.SubItems(3).Text)
  12. ColonneTotal2 += CDbl(item.SubItems(2).Text)
  13. ColonneTotal3 += CDbl(item.SubItems(1).Text)
  14. Next
  15.  
  16. '-----------------------------------------
  17.  
  18. TextBox9.Text = ColonneTotal3.ToString()
  19. TextBox8.Text = ColonneTotal2.ToString()
  20. TextBox7.Text = ColonneTotal1.ToString()
  21. TextBox6.Text = ColonneTotal.ToString()

  • Commenter cette réponse |
Score
0
òh
òi
|
Finalement je suis resté avec mon listview et j'ai suivi ton conseil et fait des boucles. :pt1cable: 


  1. Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
  2. '-----------------------------------------
  3.  
  4. Dim ColonneTotal As Integer = 0
  5.  
  6. For Each item As ListViewItem In ListView1.Items
  7. ColonneTotal += CInt(item.SubItems(4).Text)
  8. Next
  9.  
  10. '-----------------------------------------
  11.  
  12. Dim ColonneTotal1 As Integer = 0
  13.  
  14. For Each item As ListViewItem In ListView1.Items
  15. ColonneTotal1 += CInt(item.SubItems(3).Text)
  16. Next
  17.  
  18. '-----------------------------------------
  19.  
  20. Dim ColonneTotal2 As Integer = 0
  21.  
  22. For Each item As ListViewItem In ListView1.Items
  23. ColonneTotal2 += CInt(item.SubItems(2).Text)
  24. Next
  25.  
  26. '-----------------------------------------
  27.  
  28. Dim ColonneTotal3 As Integer = 0
  29.  
  30. For Each item As ListViewItem In ListView1.Items
  31. ColonneTotal3 += CInt(item.SubItems(1).Text)
  32. Next
  33.  
  34. '-----------------------------------------
  35.  
  36. TextBox9.Text = ColonneTotal3.ToString()
  37. TextBox8.Text = ColonneTotal2.ToString()
  38. TextBox7.Text = ColonneTotal1.ToString()
  39. TextBox6.Text = ColonneTotal.ToString()



Par contre il fait pas le calcul avec deux chiffres après la virgule, c'est embêtant car 0,4 + 0,4 + 0,4 = 0.

Il y aurait pas une solution pour ce petit couac?
  • Commenter cette réponse |
Score
0
òh
òi
|
Je pense que je vais t'écouter dans ta solution et me réorienter vers un datagridview.

Mon projet partait bien mais je vais m'avouer vaincu et écouter la voix de la sagesse c'est à dire la tienne.

:-) Merci Omar
  • Commenter cette réponse |
Score
0
òh
òi
, Modérateur |
Salut,

Pas forcément le plus pratique d'utiliser une ListView alors que tu veux faire un tableau. Tu ne peux pas utiliser une GridView/DataGridView ou équivalent ? C'est mieux pour faire des tableaux.

Mais sinon, pour faire ton total:
- il faut que tu boucles sur chaque ListViewItem de ta ListView (For Each Item In ListView1.Items)
- et pour chacun de ces items, tu récupères les valeurs afin de les additionner, tu boucles sur chaque SubItem de tes ListViewItem (For Each SubItem In Item)
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS