Srinivas a des données dans les deux colonnes A et B. Il doit additionner les valeurs de la colonne B pour lesquelles le format de cellule des cellules correspondantes de la colonne A est jaune. Par exemple, si le format de la cellule A17 est jaune, la valeur de la cellule B17 doit être incluse dans la somme.

Il existe de nombreuses macros disponibles sur Internet (y compris dans ExcelTips) qui vous permettent de faire une sommation conditionnelle en fonction de la couleur ou d’un autre format d’une cellule. Ce besoin est cependant différent en ce qu’il ne s’agit pas de la couleur de la cellule en question, mais de la couleur de la cellule une colonne à gauche. Cela peut toujours être fait en utilisant une macro, comme indiqué ici:

Function SumNextYellow(ByVal r As Range)

Dim c As Range     Dim a As Double

For Each c In r         If c.Offset(0, -1).Interior.ColorIndex = 6 Then 'Yellow             a = a + c.Value         End If     Next c     SumNextYellow = a End Function

La fonction peut être utilisée dans une formule de feuille de calcul et accepte une référence de plage comme argument. Il parcourt ensuite chaque cellule de la plage, et si la cellule juste à gauche est jaune, la valeur est incluse dans la somme. (Vous devez noter que le ColorIndex utilisé dans la macro doit être testé avec votre version d’Excel pour vous assurer qu’il est applicable; il peut être différent dans différentes versions.)

Un exemple beaucoup plus robuste est présenté dans la liste suivante. Cette fonction accepte une ou plusieurs plages de cellules, ainsi qu’un argument qui représente un échantillon de la mise en forme que vous souhaitez utiliser.

Function ColorConditionSum(cSample As Excel.Range, rng As Excel.Range)

' This Function returns sum of values in rng.Columns(2) if ' corresponding cell in rng.Columns(1) is colored with sample ' color (cSample cell)



' Arguments: cSample = cell colored by sample color '            rng = cell range to be processed (2 columns)



Dim rngCol2 As Excel.Range     Dim rngConstants As Excel.Range     Dim rngFormulas As Excel.Range     Dim lColorIndex As Long     Dim MySum As Double     Dim area As Excel.Range     Dim c As Excel.Range

ColorConditionSum = False     If Not TypeOf cSample Is Excel.Range Then Exit Function '>>>     lColorIndex = cSample.Interior.ColorIndex

MySum = 0     Set rngCol2 = Nothing     If TypeOf rng Is Excel.Range Then         If rng.Columns.Count < 2 Then Exit Function '>>>         On Error Resume Next         For Each area In rng.Areas             If rngCol2 Is Nothing Then                 Set rngCol2 = area.Columns(2).SpecialCells(xlCellTypeConstants, 1)

If rngCol2 Is Nothing Then                     Set rngCol2 = area.Columns(2).SpecialCells(xlCellTypeFormulas, 1)

Else                     Set rngCol2 = Application.Union( _                         rngCol2, area.Columns(2).SpecialCells(xlCellTypeFormulas, 1))

End If             Else                 Set rngCol2 = Application.Union( _                     rngCol2, area.Columns(2).SpecialCells(xlCellTypeConstants, 1))

Set rngCol2 = Application.Union( _                     rngCol2, area.Columns(2).SpecialCells(xlCellTypeFormulas, 1))

End If         Next area

For Each area In rngCol2.Areas             For Each c In area.Cells                 With c.Offset(0, -1)

If .Interior.ColorIndex = lColorIndex Then                         MySum = MySum + c.Value                     End If                 End With             Next c         Next area     End If

ColorConditionSum = MySum End Function

Vous utilisez cette fonction de la manière suivante dans une feuille de calcul:

=ColorConditionSum(A10, A12:B22)

Dans ce cas, est une cellule qui a la couleur intérieure que vous souhaitez faire correspondre et A12: B22 est la plage de cellules à évaluer. Les valeurs sont extraites de la deuxième colonne de la plage et la mise en forme est vérifiée sur les cellules de la première colonne.

_Note: _

Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.

lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur].

ExcelTips est votre source pour une formation Microsoft Excel rentable.

Cette astuce (3298) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:

lien: / excelribbon-Summing_Based_on_Formatting_in_Adjacent_Cells [Sommation basée sur le formatage dans les cellules adjacentes].