Je fais ça tout le temps avec la vba. Je suis presque sûr que j'utilise la même méthode depuis “office 95”, avec des changements mineurs pour le placement des colonnes. Cela peut être fait avec moins de lignes si vous ne définissez pas les variables. Cela peut être fait plus rapidement si vous avez beaucoup de lignes à parcourir ou plus de choses avec lesquelles vous devez définir votre groupe.
J'ai rencontré des situations où un “groupe” est basé sur 2-5 cellules. Cet exemple ne concerne qu'une colonne, mais il peut être facilement étendu si quelqu'un prend le temps de jouer avec.
Cela suppose 3 colonnes, et vous devez trier par la colonne group_values. Avant d'exécuter la macro, sélectionnez la première cellule que vous voulez comparer dans la colonne group_values.
'group\_values, some\_number, empty\_columnToHoldSubtotals '(stuff goes here) 'cookie 1 empty 'cookie 3 empty 'cake 4 empty 'hat 0 empty 'hat 3 empty '... 'stop
Sub subtotal() ' define two strings and a subtotal counter thingy Dim thisOne, thatOne As String Dim subCount As Double ' seed the values thisOne = ActiveCell.Value thatOne = ActiveCell.Offset(1, 0) subCount = 0 ' setup a loop that will go until it reaches a stop value While (ActiveCell.Value <> "stop") ' compares a cell value to the cell beneath it. If (thisOne = thatOne) Then ' if the cells are equal, the line count is added to the subcount subCount = subCount + ActiveCell.Offset(0, 1).Value Else ' if the cells are not equal, the subcount is written, and subtotal reset. ActiveCell.Offset(0, 2).Value = ActiveCell.Offset(0, 1).Value + subCount subCount = 0 End If ' select the next cell down ActiveCell.Offset(1, 0).Select ' assign the values of the active cell and the one below it to the variables thisOne = ActiveCell.Value thatOne = ActiveCell.Offset(1, 0) Wend End Sub