Total de 3 colonne dans une ListView

geraldvc

XLDnaute Junior
Bonjour à tous,

voici une capture d’écran pour mieux comprendre,


Donc j'ai 6 colonne dans ma ListView1 et j'aimerai ,après une filtration avoir le total de le colonne 2,3,4.

Merci d'avance,

PS: je suis novice
 

youky(BJ)

XLDnaute Barbatruc
Re : Total de 3 colonne dans une ListView

Bonsoir geraldvc,
Pour le manque de réponses c'est pas évident sans voir une ligne de code.
Tu dois remplir la listview par une boucle For . . .?
' For k=2 to . . . .j'utilise k comme variable boucle
'le remplissage
' ListView1.ListItems.Add k, , BD.Cells(lig, 4)
' ListView1.ListItems(k).SubItems(1) = BD.Cells(lig, 5)
' et les autres
t1 = t1 + ListView1.ListItems(k).SubItems(1)
t2 = t2 + ListView1.ListItems(k).SubItems(2)
t3 = t3 + ListView1.ListItems(k).SubItems(3)
'next
labelmachin=t1:labelmachin2=t2

Petite rectif en cas de vide si bug
t1=iif(ListView1.ListItems(k).SubItems(1)="",t1,t1+ListView1.ListItems(k).SubItems(1))
t2=iif(ListView1.ListItems(k).SubItems(2)="",t2,t2+ListView1.ListItems(k).SubItems(2))
t3=iif(ListView1.ListItems(k).SubItems(3)="",t3,t3+ListView1.ListItems(k).SubItems(3))

t1 est somme col Nbre
t2 est total litres
t3 poids


Bruno
 
Dernière édition:

YANN-56

XLDnaute Barbatruc
Re : Total de 3 colonne dans une ListView

Bonsoir geralddvc, et à ceux qui passeront par ici,

En premier lieu je te signale que ta copie d'écran
trop grande FICHE le désordre dans la page XLD.

Et en second, j'ai la solution, mais je vais être obligé de me farcir
une base de données pour l'initialisation de la LisView.
(J'aime vérifier mon code avant de le soumettre)

Avec un Fichier exemple, cela aurait été plus facile!

Ceci dit, j'y vais, et à un peu plus tard.

Amicalement.

Yann
 

geraldvc

XLDnaute Junior
Re : Total de 3 colonne dans une ListView

merci , il y a qq super,

donc oui c'est la somme d'un subitems ,

mon but: sois le total se met (via initialize) automatiquement
ou via un bonton click,
je suis ouver au proposition , je vais deja regarder le code de youki.

deposez des code et je trirer

merci nom 1000 merci
 

YANN-56

XLDnaute Barbatruc
Re : Total de 3 colonne dans une ListView

Re geraldvc et Bruno,

Il en est des Classeurs exemples
comme des croquis qui valent mieux qu'un long discours

En voici donc un joint.

Amicalement.

Yann
 

Pièces jointes

  • NAMUR.xls
    37.5 KB · Affichages: 178

YANN-56

XLDnaute Barbatruc
Re : Total de 3 colonne dans une ListView

Merci de ton Merci,

Un truc cependant:

Dans ma procédure, il y a:

Code:
.ListItems(.ListItems.Count).Key = "R " & i

Cette fonction n'est pas utilisée dans mon exemple.

J'ai aussi oublié ".FullRowSelect = True"
Car si tu cliques ailleurs que sur l'Item, cela ne marche pas.
Alors qu'avec ce dernier c'est Ok.

La récupération du numéro de la ligne de la base de données
va te permettre par la suite de savoir où écrire.

Ce petit détail peut avoir de l'importance par la suite de ton projet.

Bon courage et bonnes réussites dans tes recherches.

Amicalement.

Yann

P.J. Classeur complété.
 

Pièces jointes

  • NAMUR_1.xls
    25.5 KB · Affichages: 144

geraldvc

XLDnaute Junior
Re : Total de 3 colonne dans une ListView

pour "yan"ou ...j'ai regardé de plus prêt ton code, il y a un truc qui me gène,

dans ton code tu charge la listview via la feuil1, mais dans mon cas j'ai déja charger ma listview1 donc je cale.
je te colle mon inisalize pour que tu comprennes

Dim Cell As Range
Dim i As Long, X As Long, k As Byte, total As Variant

With ListView1
'Entête
With .ColumnHeaders
.clear

.Add , , "Article", 100
.Add , , "NBR", 40 'titre de la colonne et largeur et alignement
.Add , , "Litre", 40
.Add , , "POIDS", 40, lvwColumnCenter
.Add , , "Date de livraison", 70
.Add , , "Num de client", 50
.Add , , "Nom du client", 70
.Add , , "Prénom ", 50
.Add , , "Tel", 90
.Add , , "gsm", 90
.Add , , "rue 2", 1
.Add , , "ville bureau", 1

End With

.View = lvwReport
.FullRowSelect = True
.Gridlines = True
' Chargement des données
'Me.Somme = 0
'Me.Label18 = 0
Sheets("Data").Range("A1").AutoFilter

For i = 2 To Sheets("Data").Range("B65536").End(xlUp).Row ' le determine le numero de la ligne

' ici en bas on remplis les liste view donc 1 = 1ère col 2 2ème col car toute les col sont remplie de 1 a 118
.ListItems.Add , "M" & i, Sheets("Data").Cells(i, 1) 'titre
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Data").Cells(i, 2) 'prenom
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Data").Cells(i, 3) '2 prenom

.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Data").Cells(i, 4) 'nom
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Data").Cells(i, 5) 'suffix
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Data").Cells(i, 6) '
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Data").Cells(i, 7) '
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Data").Cells(i, 8) '
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Data").Cells(i, 9) '
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Data").Cells(i, 10) '
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Data").Cells(i, 11) '
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Data").Cells(i, 12) '




Next
' Nom des Labels
'For k = 1 To 21
'Controls("Label" & k).Caption = ListView1.ColumnHeaders(k)
'Next
.ListItems(1).Selected = False
End With
Alim_Combo
'



End Sub

si tu peux encore me filer un coup de main,
 

youky(BJ)

XLDnaute Barbatruc
Re : Total de 3 colonne dans une ListView

Bonsoir geraldvc,
Le total s'effectue avec le remplissage de la listview et est indiqué dans des Label, pas besoin d'un bouton TOTAL.

Bruno
Code:
For i = 2 To Sheets("Data").Range("B65536").End(xlUp).Row ' le determine le numero de la ligne

' ici en bas on remplis les liste view donc 1 = 1ère col 2 2ème col car toute les col sont remplie de 1 a 118
.ListItems.Add , "M" & i, Sheets("Data").Cells(i, 1) 'titre
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Data").Cells(i, 2) 'prenom
[B][COLOR="red"]t1=t1+Sheets("Data").Cells(i, 2)[/COLOR] [/B]
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Data").Cells(i, 3) '2 prenom
[B][COLOR="red"]t2=t2+Sheets("Data").Cells(i, 3)[/COLOR] [/B]
'la suite
Next
[B][COLOR="Red"]labelN°?=t1
LabelN°?+1=t2[/COLOR][/B]
 

YANN-56

XLDnaute Barbatruc
Re : Total de 3 colonne dans une ListView

Bonsoir à vous,

Ce qui m'énerve le plus c'est la caisse d'écritures inutiles,
sans parler des variables intermédiaires qui ne servent à rien!!!

(Si ce n'est peut-être pour faire un peu plus "Pro")

Je ne vise personne!
Mais je compte simplement la moitié de lignes dans mon code.

Quant à obtenir un résultat, soit immédiatement au chargement,
ou par click sur un bouton.... L'adaptation est évidente!!!
(Y compris les différents tris envisageables)

Désolé, vous entrez dans une cour où je n'ai pas envie de jouer.

geraldvc, si tu avais joins ta feuille "Data",
il m'aurait été plus facile de te construire un exemple concret.

De la même façon, si tu étais reparti de mon exemple,j'aurais pu te suivre.
Ce qui n'est pas le cas!!!

Sauf que j'aurais débaptisé "Data" qui est un peu hors de mon
langage de balbutiant en VBA.

Amicalement.

Yann
 

ChTi160

XLDnaute Barbatruc
Re : Total de 3 colonne dans une ListView

Salut geraldvc
Bonsoir le Fil
Bonsoir le Forum

j'avais moi aussi pensé à cela ( ce matin )

Code:
[SIZE=2]Private Sub UserForm_Initialize()
With Me.ListView1: .Gridlines = True: .View = 3: .FullRowSelect = True
    With .ColumnHeaders 'LES ENTETES SONT EN LIGNE 4
       For i = 1 To ActiveSheet.UsedRange.Columns.Count
                      .Add , , ActiveSheet.Cells(4, i).Value, 70
       Next i
    End With
' INITIALISATION (Les données à charger commencent à la ligne 5)
       For i = 5 To ActiveSheet.UsedRange.Rows.Count + 5
                           .ListItems.Add , , ActiveSheet.Cells(i, 1).Value
            For j = 2 To ActiveSheet.UsedRange.Columns.Count
                               .ListItems(.ListItems.Count).ListSubItems.Add , , _
                                        ActiveSheet.Cells(i, j).Value
  Select Case j
            Case 2
  TOTAL_COL_2 = TOTAL_COL_2 + IIf(ActiveSheet.Cells(i, j).Value = "", 0, _ 
                                        CDbl(ActiveSheet.Cells(i, j).Value))
            Case 3
  TOTAL_COL_3 = TOTAL_COL_3 + IIf(ActiveSheet.Cells(i, j).Value = "", 0, _
                                        CDbl(ActiveSheet.Cells(i, j).Value))
            Case 4
   OTAL_COL_4 = TOTAL_COL_4 + IIf(ActiveSheet.Cells(i, j).Value = "", 0, _
                                        CDbl(ActiveSheet.Cells(i, j).Value))
                    End Select
             Next j
       Next i
End With
Me.Label1 = "Total NBR : " & TOTAL_COL_2
Me.Label2 = "Total LITRES : " & TOTAL_COL_3
Me.Label3 = "Total POIDS : " & TOTAL_COL_4

End Sub[/SIZE]
Ps Salut Yann effectivement pas évident Lol !!!!
Bonne fin de Soirée
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
207

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote