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

Messages postés
710
Date d'inscription
jeudi 20 février 2003
Dernière intervention
19 mai 2015
- - Dernière réponse : cs_Le Pivert
Messages postés
5601
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
12 décembre 2018
- 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
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
1
Merci
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

Merci ucfoutu 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CodeS-SourceS

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Dernière intervention
14 janvier 2017
0
Merci
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()
 
Commenter la réponse de cs_Robert33
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Bonjour, cs_Robert33,
Te reste plus qu'à transposer en VB6 (la présente section du forum)...
cs_Robert33
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Dernière intervention
14 janvier 2017
-
oups...
va falloir que je réinstalle un vb6 ...
Commenter la réponse de ucfoutu
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Dernière intervention
19 mai 2015
0
Merci
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
cs_Robert33
Messages postés
835
Date d'inscription
samedi 15 novembre 2008
Dernière intervention
14 janvier 2017
-
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.
Commenter la réponse de cs_petchy
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Dernière intervention
19 mai 2015
0
Merci
re,
les numériques ne sont pas des décimaux et c la colonne 3
ItemX.SubItems(3) = Rs.Fields("heure")
Commenter la réponse de cs_petchy
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
710
Date d'inscription
jeudi 20 février 2003
Dernière intervention
19 mai 2015
0
Merci
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
Commenter la réponse de cs_petchy
0
Merci
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é
Commenter la réponse de Hugues
Messages postés
5601
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
12 décembre 2018
0
Merci
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


Commenter la réponse de cs_Le Pivert

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.