1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
Dim souTotal As New List(Of Integer) 'liste des sous totaux
Dim idSouTotal As New List(Of Integer) 'liste des index d'insertion des sous totaux
Dim sDate As Date 'la date concernée par le sous total
Dim total, totalGnl As Integer
Dim h As Integer = 0 'nbre de sous totaux
total = 0
totalGnl = 0 'total générale
'/// je fais d'abord un tri sur la colonne date afin de regrouper les dates par ordre alphabétique
Me.DataGridView1.Sort(Me.DataGridView1.Columns(0), System.ComponentModel.ListSortDirection.Ascending)
For i As Integer = 0 To DataGridView1.RowCount - 1
If i = 0 Then sDate = CDate(Me.DataGridView1(0, 0).Value) ' Recupération de la 1ère date
If sDate = CDate(Me.DataGridView1(0, i).Value) Then 'Comparaison de la date recupérée avec celle du datagridview
'si les deux date sont égales le calcul se poursuit
total += CInt(DataGridView1.Rows(i).Cells(1).Value)
Else 'si les deux date ne sont pas égales le procécus suivant :
h += 1 ' incrémentation du nombre de sous total
souTotal.Add(total) ' ajout du sous total à la liste
idSouTotal.Add(CInt(i + h - 1)) ' ajout de l'index du sous total à la liste
totalGnl += total ' total général
sDate = CDate(Me.DataGridView1(0, i).Value) 'Recupération de la date suivante
total = 0 'le compteur du sous total à zéro
total += CInt(DataGridView1.Rows(i).Cells(1).Value)
End If
If i = Me.DataGridView1.RowCount - 1 Then 'dernière ligne
h += 2
souTotal.Add(total)
idSouTotal.Add(CInt(i + h - 1))
totalGnl += total
End If
Next
'insertion des sous totaux dans le tableau
Dim id As Integer
For j As Integer = 0 To souTotal.Count - 1 'parcourt des sous totaux
id = CInt(idSouTotal(j))
Me.DataGridView1.Rows.Insert(id, 1)
Me.DataGridView1(0, id).Value = "Total (" & Me.DataGridView1(0, id - 1).Value & ")"
Me.DataGridView1(1, id).Value = souTotal(j)
Next
'insertion du total général dans le tableau
Me.DataGridView1.Rows.Add()
Me.DataGridView1(0, Me.DataGridView1.RowCount - 1).Value = "Total général"
Me.DataGridView1(1, Me.DataGridView1.RowCount - 1).Value = totalGnl |
Partager