Total d'une colonne dans une Listview [Résolu]

Signaler
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
-
Messages postés
7378
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 mai 2021
-
Bonjour,
dans ma listview j'ai 5 colonnes dont une avec des chiffres.
comment faire pour avoir le total dans un textbox de cette colonne.

merci
@ plus

11 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bon...
Mais tu sais quoi ? Au lieu d'aller "étaler" "ailleurs" une solution que tout le monde connaît et qui n'apporte rien aux développeurs, tu ferais mieux d'éviter tes DEUX boucles (relis-moi) ===>>>

......
dim mon_total as long
While Not Rs.EOF
Set ItemX = List.ListItems.add(, , Rs.Fields("salarié"))
ItemX.SubItems(1) = Rs.Fields("chantier")
ItemX.SubItems(2) = Rs.Fields("date")
ItemX.SubItems(3) = Rs.Fields("heure")
ItemX.SubItems(4) = Rs.Fields("mo")
mon_total = mon_total + ItemX.SubItems(3)
Label1 = Rs.Fields("num") + 1 & " _" & Text1.Text
Rs.MoveNext
Wend
msgbox mon_total
......

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
30
Bonjour

Tu parcours les éléments de la liste et tu sommes la colonne qui t'intéresse

ex:
Dim total As Integer = 0
For Each item As ListViewItem In ListView1.Items
  total += CInt(item.SubItems(2).Text)'3eme colonne
Next
TextBox1.Text = total.ToString()
 
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour, cs_Robert33,
Te reste plus qu'à transposer en VB6 (la présente section du forum)...
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
30
oups...
va falloir que je réinstalle un vb6 ...
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
merci pour ton code, mais ça ne fonctionne pas
j'ai mis ton code dans l'évenement click de ma combo

Private Sub cbb_nom_Click()
Dim Total As Integer
Call Connect
List.ListItems.Clear
Sql = "Select * from pointage where salarié='" & cbb_nom.Text & "'"
Rs.Open Sql, Db, adOpenStatic, adLockPessimistic

    While Not Rs.EOF
    Set ItemX = List.ListItems.add(, , Rs.Fields("salarié"))
    ItemX.SubItems(1) = Rs.Fields("chantier")
    ItemX.SubItems(2) = Rs.Fields("date")
    ItemX.SubItems(3) = Rs.Fields("heure")
    ItemX.SubItems(4) = Rs.Fields("mo")
    Label1 = Rs.Fields("num") + 1 & " _" & Text1.Text
       
          Rs.MoveNext
     
    Wend
    
Call Deconnect


For Each item As ListViewItem In List.Items
  total += CInt(item.SubItems(3).Text)'3eme colonne
Next
TextBox1.Text = Total.ToString()

End Sub
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
30
Désolé Petchy, le code que j'ai donné est pour du VB donet,

je suis en train de réinstaller un VB6 pour transposer le code.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Evidemment (cs_Robert33 t'a donné un code VB.Net ...)
Allez :
- quelle est la colonne concernée ?
- les numériques qui y sont sont-ils des décimaux ? Et si oui : avec quel séparateur décimal ?*
Tu auras ta solution dès que tu auras répondu avec précision à ces trois questions.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
re,
les numériques ne sont pas des décimaux et c la colonne 3
ItemX.SubItems(3) = Rs.Fields("heure")
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Explique donc comment tu es passé de :
"dans ma listview j'ai 5 colonnes dont une avec des chiffres.
comment faire pour avoir le total dans un textbox de cette colonne"

à
"les numériques ne sont pas des décimaux et c la colonne 3
ItemX.SubItems(3) = Rs.Fields("heure")"

Que veux-tu dire ?
A moins que par "heure" tu veuilles dire "durée" exprimée en heures entières !

Et le subitems(3), c'est la colonne 4 et non la 3, hein ...

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Mais je vais considérer qu'en colonne 4 (tes subitems(3)) tu as bien des chiffres et qu'ils sont bien des entiers ===>>>

Dim mon_total As Long
For i = 1 To ListView1.ListItems.Count
mon_total = mon_total + ListView1.ListItems(i).SubItems(3)
Next
MsgBox mon_total

PS : j'espère que tu sauras t'en inspirer pour n'avoir que ta boucle While (et y calculer en même temps que tu insères), et non deux boucles (une while et l'autre For, hein ...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
merci pour le code, ça fonctionne

Dim mon_total As Long
 For i = 1 To List.ListItems.Count
   mon_total = mon_total + List.ListItems(i).SubItems(3)
 Next
Text2.Text = mon_total
Bjr. SVP, ce bout de codes est-il bien en VB ? car, j'ai utilisé cela pour sommer une colonne de listView en visual basic 2010 Express, mais ça ne passe pas
'istItems' n'est pas un membre de 'System.Windows.Forms.ListView'.'''''' tel est le message d'erreur qui m'est renvoyé
Messages postés
7378
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 mai 2021
122
Bonjour,

En haut du post il est spécifié VB6, ce n'est donc pas du VB.Net!

Voici un code en VB.Net pour additioner la 4ème colonne

 Dim dblTotal As Double = 0
        Dim dblTemp As Double
        For Each lvItem As ListViewItem In ListView1.Items
            If Double.TryParse(lvItem.SubItems(3).Text, dblTemp) Then
                dblTotal += dblTemp
            End If
        Next
       MessageBox.Show(CStr(dblTotal))


voilà

Voir ceci aussi:

https://plasserre.developpez.com/cours/vb-net/?page=ui-winforms3#LVIII-H-4