Total d'une colonne dans une Listview

Résolu
cs_petchy
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
- 28 déc. 2013 à 13:33
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
- 21 août 2018 à 16:15
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

ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Modifié par ucfoutu le 28/12/2013 à 21:29
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
1
cs_Robert33
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
32
28 déc. 2013 à 14:32
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()
 
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
28 déc. 2013 à 16:23
Bonjour, cs_Robert33,
Te reste plus qu'à transposer en VB6 (la présente section du forum)...
0
cs_Robert33
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
32
28 déc. 2013 à 16:29
oups...
va falloir que je réinstalle un vb6 ...
0
cs_petchy
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
28 déc. 2013 à 16:30
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
0
cs_Robert33
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
32
28 déc. 2013 à 16:42
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Modifié par ucfoutu le 28/12/2013 à 16:42
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
0
cs_petchy
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
28 déc. 2013 à 17:32
re,
les numériques ne sont pas des décimaux et c la colonne 3
ItemX.SubItems(3) = Rs.Fields("heure")
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Modifié par ucfoutu le 28/12/2013 à 17:37
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
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Modifié par ucfoutu le 28/12/2013 à 17:53
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
0
cs_petchy
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Statut
Membre
Dernière intervention
19 mai 2015
3
28 déc. 2013 à 18:39
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
0
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
0
'istItems' n'est pas un membre de 'System.Windows.Forms.ListView'.'''''' tel est le message d'erreur qui m'est renvoyé
0
cs_Le Pivert
Messages postés
7743
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
9 mai 2022
129
Modifié le 21 août 2018 à 16:21
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


0