Somme de Colonnes d'une ListView dans Label ou TextBox

MuscatMimi

XLDnaute Accro
Bonjour a tous,

Meilleurs voeux pour 2009 et longue vie a ce merveilleux site

J'ai un Usf avec 2 Cbx et 1 ListView pour Filtrer ma base de Données Fournisseurs
Filtre par Noms de Fournisseurs
et Noms de Produits

Dans cette ListView il y a plusieurs Colonnes ,dont 4 Colonnes ou ce trouve des Prix

A t'on possibilité de faire afficher le Total de Chaque Colonne oub ce trouve les Prix dans 4 Tbx ou 4 Label
en fonction du Nom du Fournisseur Sélectionné dans la Cbx 1

idem pour la Cbx2 pour le "Nom du Produit"

Merci a l'avance
A+++++++++++
 

bqtr

XLDnaute Accro
Re : Somme de Colonnes d'une ListView dans Label ou TextBox

Bonjour Christian et bonne année

Voici un exemple qui fait le Total de la colonne 6 d'une listview dans un label nommé "Somme":

Code:
Private Sub TTotal()

Dim k As Long, Ttl As Currency
With ListView1
  For k = 1 To .ListItems.Count
      Ttl = Ttl + .ListItems(k).ListSubItems(6).Text
  Next
  Somme.Caption = Format(Ttl, "# ##0.00") 
End With

End Sub

A+
 

MuscatMimi

XLDnaute Accro
Re : Somme de Colonnes d'une ListView dans Label ou TextBox

Salut Bqtr

merci pour ton aide
j'ai placé ce code dans mon usf concerné
mais ça ne fonctionne pas
ma demande ,porte sur le fait de sélectionner un Nom dans ma "Cbx1" "Fournisseurs" cela affiche tous les même noms dans ma ListView
et qu'une fois la ListView remplie
ça m'affiche le total de la Colonne 6 (par exemple)dans un label
idem si je sélectionne un Produit dans la deuxième " Cbx2 "
a +++++
 
Dernière édition:

bqtr

XLDnaute Accro
Re : Somme de Colonnes d'une ListView dans Label ou TextBox

Re,

J'y vois pas d'inconvénient, mais ne peux-tu pas mettre un fichier avec juste ton userform et les feuilles qui vont avec et des données bidon. Zippé ça devrait passer. Et ça pourra peut-être être utile à d'autres

A+

Edit : Ok, je regarde
 

bqtr

XLDnaute Accro
Re : Somme de Colonnes d'une ListView dans Label ou TextBox

Re,

Tu as bien placé la macro, mais tu ne l'appelles pas :confused: donc elle ne se déclenche pas.

Rajoute dans les 6 macros "Private Sub Cbx?" avant le End sub TTotal comme ceci pour la première :

Code:
Private Sub Cbx1_Click()
ListView1.ListItems.Clear
Alim_Listv 1, 1
Vide_Combo 1
[COLOR=Blue][B]TTotal[/B][/COLOR]
End Sub
De plus la première colonne dans une Listview a pour index 0, la 2èmè 1 donc la colonne Débit a comme index 6 et non 7, tu dois donc modifier le n° dans la macro TTotal :
Code:
Ttl = Ttl + .ListItems(k).ListSubItems([COLOR=Blue][B]6[/B][/COLOR]).Text
A+
 
Dernière édition:

bqtr

XLDnaute Accro
Re : Somme de Colonnes d'une ListView dans Label ou TextBox

Re,

Modification de la macro TTotal :
Code:
Private Sub TTotal(Col As Byte)

Dim k As Long, Ttl As Currency
With ListView1
  For k = 1 To .ListItems.Count
     If .ListItems(k).ListSubItems(Col).Text <> "" Then Ttl = Ttl + .ListItems(k).ListSubItems(Col).Text
  Next
  Somme.Caption = Format(Ttl, "# ##0.00")
End With

End Sub
Maintenant quand tu appelles cette macro elle a besoin d'un argument : Col, n° qui dans ton cas correspond à la colonne de la Listview que tu souhaites sommer.
Ce qui donne pour la colonne Débit:

Code:
Private Sub Cbx1_Click()
ListView1.ListItems.Clear
Alim_Listv 1, 1
Vide_Combo 1
TTotal [COLOR=Blue][B]6[/B][/COLOR]
End Sub


Pour la colonne Crédit :
Code:
Private Sub Cbx1_Click()
ListView1.ListItems.Clear
Alim_Listv 1, 1
Vide_Combo 1
TTotal [COLOR=Blue][B]7[/B][/COLOR]
End Sub

Voilà :)

A+


 
Dernière édition:

bqtr

XLDnaute Accro
Re : Somme de Colonnes d'une ListView dans Label ou TextBox

Re,

Si tu rajoutes une autre label par exemple pour avoir la somme des Débits et des Crédits.

Dans ce cas renomme le nom des Labels dans la propriéte Name du Label (comme ce que j'ai fait pour les Combobox de 1 à 6, Cbx1,Cbx2...), nomme les Lbl1 et Lbl2 par exemple.

La macro TTotal modifiée qui attend deux arguments : La colonne et le n° du Label :

Code:
Private Sub TTotal([B]Col[/B] As Byte, [B]NumLabel[/B] As Byte)

Dim k As Long, Ttl As Currency
With ListView1
  For k = 1 To .ListItems.Count
     If .ListItems(k).ListSubItems([B]Col[/B]).Text <> "" Then Ttl = Ttl + .ListItems(k).ListSubItems([B]Col[/B]).Text
  Next
  Controls("Lbl" & [B]NumLabel[/B]).Caption = Format(Ttl, "# ##0.00")
End With

End Sub

Et pour le Combobox Cbx1 par exemple :
Code:
Private Sub Cbx1_Click()
ListView1.ListItems.Clear
Alim_Listv 1, 1
Vide_Combo 1
TTotal 6, 1
TTotal 7, 2
End Sub

Tu auras alors le total des Débits et des Crédits dans tes deux Labels.

A+
 

MuscatMimi

XLDnaute Accro
Re : Somme de Colonnes d'une ListView dans Label ou TextBox

Génial, tu a répondu a mes attentes
en effet il faut que je fasse le total de plusieurs colonnes
de prix de produits 6 colonnes en tout
en fait ce n'est pas le fichier sur lequel je travail, mais je me suis servi de cet Usf
déja tout fait
 

MuscatMimi

XLDnaute Accro
Re : Somme de Colonnes d'une ListView dans Label ou TextBox

Re bqtr

dis moi encore une question

dans cet Usf quand je sélectionne un nom dans Cbx1 par exemple
Les données qui s'affiche sont au bon format
mais ne s'affiche pas comme 1540.00 €
je ne trouve pas ce qu'il peut y avoir
Merci a l'avance
A ++++++
 

bqtr

XLDnaute Accro
Re : Somme de Colonnes d'une ListView dans Label ou TextBox

Re,

Tu as aussi cette possibilité si les colonnes de la listview à sommer se suivent. Une seule macro peut suffire, cela évite de l'appeler 6 fois et tu n'as plus d'argument à lui passer.

Code:
Private Sub TTotal()

Dim k As Long, NumLabel As Byte, m As Byte, Col As Byte, Ttl As Currency

NumLabel = 1
Col = 6
With ListView1
   For m = 1 To 6
      For k = 1 To .ListItems.Count
        If .ListItems(k).ListSubItems(Col).Text <> "" Then Ttl = Ttl + .ListItems(k).ListSubItems(Col).Text
      Next
      Controls("Lbl" & NumLabel).Caption = Format(Ttl, "# ##0.00")
      Ttl = 0
      NumLabel = NumLabel + 1
      Col = Col + 1
   Next
End With

End Sub

Tu nommes les Labels Lbl1, Lbl2........Lbl6.
La variable Col prend le n° de la 1ère colonne à sommer, ensuite elle s'incrémente avec la boucle.
Même chose pour la variable NumLabel, n° des Labels
La variable Ttl sera remise à zéro avant chaque nouvelle boucle m

la macro qui appellera la procédure TTotal ne le fera donc qu'une seule fois.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 087
Membres
103 461
dernier inscrit
dams94