addition suivant couleur

  • Initiateur de la discussion Marion
  • Date de début
M

Marion

Guest
Bonjour le forum.


je ne pense pas que cela soit possible
additionner les cellules dans un tableau ayant la même couleur


Je joins un fichier

A+Marion [file name=Marion11.zip size=2190]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Marion11.zip[/file]
 

Pièces jointes

  • Marion11.zip
    2.1 KB · Affichages: 45
  • Marion11.zip
    2.1 KB · Affichages: 51
  • Marion11.zip
    2.1 KB · Affichages: 43

JJM

XLDnaute Occasionnel
Bonjour Marion,

Si, c'est possible. En attendant de voir ton fichier, si ton problème n'est pas résolu, voici le code d'une fonction permettant cela, à placer dans un module :

Code:
Function SommeGrise(Plage As Range)
    For Each Cell In Plage
        If Cell.Interior.ColorIndex = 15 Then Somme = Somme + Cell.Value
    Next

    SommeGrise = Somme
End Function

Pour l'exploiter, tu peux l'appeler à partir d'une cellule, en lui passant en paramètre la plage à analyser. Le contenu de toutes les cellules à fond gris sera additionné :

=SommeGrise(F10:F28)

Il suffit de préciser la bonne valeur de ColorIndex, pour exploiter d'autres couleurs.
Bon appétit. :)
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Regarde ton fichier avec la fonction en plus

BOn courage [file name=Marion11_20050622133805.zip size=7311]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Marion11_20050622133805.zip[/file]
 

Pièces jointes

  • Marion11_20050622133805.zip
    7.1 KB · Affichages: 70

Gael

XLDnaute Barbatruc
Bonjour Marion, Pascal, Creepy et JJM

J'avais dans un autre FIL récapitulé quelques éléments sur ces problèmes de couleur à partir de fonctions proposées par Binoute et Jean-Marie (je n'ai donc aucun mérite). Je te l'envoie ci-dessous:

1 - Pour compter les cellules d'une couleur dans une plage:

Function CCF(SearchArea As Object, BgColor As Byte) As Integer
Application.Volatile True
CCF = 0
For Each cell In SearchArea
If cell.Interior.ColorIndex = BgColor Then CCF = CCF + 1
Next cell
End Function

2 - Pour renvoyer une matrice de 0 et 1 en fonction de l'index couleur:

Function MCF(SearchArea As Range, BgColor As Byte) As Variant
Dim Matrice() As Byte
Dim cell As Range
Application.Volatile True
ReDim Matrice(SearchArea.Rows.Count - 1)
J = 0
For Each cell In SearchArea
Matrice(J) = IIf(cell.Interior.ColorIndex = BgColor, 1, 0)
J = J + 1
Next cell
MCF = Application.Transpose(Matrice)
End Function

Pour connaître l'index des couleurs:

2 méthodes:

* Autoenregistrer une macro en appliquant les couleurs souhaitées sur une ou plusieurs cellules puis récupérer dans la macro le code par exemple '.ColorIndex = 7'

Méthode développée dans ce forum

* Mettre une couleur quelconque dans une cellule (ex:B16)
* Se positionner sur la cellule située à sa droite
* Faire Insertion / nom / définir puis tapez 'Indcol' dans le champ Nom dans le classeur
* Dans le champ Fait référence à tapez: '=LIRE.CELLULE(38;!B16)'
* Validez

En tapant '=Indcol' dans n'importe quelle cellule du tableau, l'index couleur de la cellule située à sa gauche s'affichera.

ATTENTION: ces fonctions ne marchent pas pour des couleurs définies dans une mise en forme conditionnelle mais seulement si les couleurs sont appliquées dans le format de la cellule.

Dans le cas des MFC, il faut utiliser pour compter les cellules de couleur les mêmes conditions qui servent à appliquer ces couleurs.

@+

Gael
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Gael juste un petit truc

dans ta fonction CCF tu comptes le nombre de cellules d'une couleur alors que la demande etait de compter les valeurs à l'interieur d'une cellule

Et tu verras dans la fonction que j'ai envoyé que on a pas besoin de connaitre le code couleur mais juste d'indiquer une cellule où il y a la couleur recherchée

Je te mets la fonction si tu ne peux télécharger

Function ColorCountIf(SearchArea As Object, BgColor As Range) As Integer

Dim MaCoul As Variant
Dim cell As Range

Application.Volatile True
ColorCountIf = 0
MaCoul = BgColor.Interior.ColorIndex
For Each cell In SearchArea
If cell.Interior.ColorIndex = MaCoul Then ColorCountIf = ColorCountIf + cell.Value
Next cell

End Function


Bon courage
 

Gael

XLDnaute Barbatruc
Bonjour Pascal,

J'ai effectivement mal lu la demande que j'ai instinctivement et trop vite assimilée à un autre FIL.

La fonction CCF vient en fait de la fonction ColorCountIf, car je voulais initialement ne pas avoir à définir une cellule spécifique avec une couleur de référence. Je m'aperçois finalement que ce n'est pas utile dans la mesure où l'on peut utiliser une des cellules à compter ou à additionner comme référence.

Par contre, la fonction qui renvoie une matrice (dans laquelle on peut aussi suprimer l'index couleur) peut s'avérer utile pour l'associer à SOMMEPROD par exemple, ce qui permet d'associer d'autres filtres et de totaliser d'autres colonnes.

Merci de ta remarque.

@+

Gael
 

pat1545.

XLDnaute Accro
Salut,

personnelement, je préfère celle -ci:
(ne se mets pas à jour seule !!!)

' fonction xl permettant de sommer et compter des cellules par leur couleur de fond
' -----------------------------------------------------------------------------------
Function SumByColor(InputRange As Range, ColorRange As Range) As Double
Dim cl As Range, TempSum As Double, ColorIndex As Integer
ColorIndex = ColorRange.Cells(1, 1).Interior.ColorIndex
TempSum = 0
On Error Resume Next ' ignore cells without values
For Each cl In InputRange.Cells
If cl.Interior.ColorIndex = ColorIndex Then TempSum = TempSum + cl.Value
Next cl
On Error GoTo 0
Set cl = Nothing
SumByColor = TempSum
End Function
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom