Additionner les valeurs de police verte ou rouge

Bonjour,

Je souhaite faire la somme de toutes mes cellules ayant des valeurs de couleur de police rouge.

J'ai donc créé une fonction que voici:

Function cumul_couleur(plage As Range, col As Range)
'*********************************************************
' Effectuer la somme des cellules en couleur *
'*********************************************************
Dim elm As Object
Application.Volatile
cumul_couleur = 0
For Each elm In plage
    If elm.Font.ColorIndex = col.Font.ColorIndex Then
        cumul_couleur = cumul_couleur + elm.Value
    End If
Next elm
End Function

Je l'appelle correctement dans ma cellule approprié c'est à dire: =cumul_couleur(F9:G12;E3)

Mon problème est le suivant: les cellules de mon fichier ont un format conditionnel. En fonction de la valeur de la colonne A, mes colonnes F et G ont une police verte ou rouge.

Lorsque j'appelle donc ma fonction cumul_couleur en mettant ma cellule E3 avec une police verte ou rouge j'ai 0, par contre si je mets la police automatique la noire alors il me fait bien la somme.

Je pense qu'il ne reconnait pas les couleurs de police puisque celles ci sont définis avec le format conditionnel mais comment faire dans ce cas?

Je pense que mon problème est complexe j'espère qu'une solution est possible sans tout refaire. Merci de votre coup de main.

Bonjour,

Le plus simple est de compter les cellules qui répondent à la condition que tu as utilisée pour la MFC, c'est-à-dire en fonction de la valeur de la colonne A.

A

j'ai fais cela et ça marche. Mais il faut créer autant de fonction que de conditions pour ma couleur. J'ai deux couleurs donc deux fonctions différentes ça va mais si j'avais plus de couleurs c'est fastidieux.

C'est dommage que la 1ere solution ne fonctionne pas quand même.

Bon le principal c'est que ça marche, merci pour cette alternative

j'ai quand même un souci avec la fonction de manière générale. Je m'explique:

Lorsque je clique sur un bouton de mon fichier ça fait tourner une macro disponible dans module1. Les macros sont indépendants des fonctions, elles ne les appellent pas du tout. Les fonction sont dans un 2ème module.

Quand je lance ma macro, à chaque ligne de code en mode debug il passe dans la fonction. Il fait de même lorsque j'exécute entièrement la macro du coup elle met beaucoup de temps à tourner quand elle ne fait pas planter excel.

La fonction n'est-elle pas censée être appelée que dans la cellule où je l'appelle? Donc soit quand je clique sur entrée dans la cellule soit lorsque j'ajoute une valeur dans la plage de la fonction?

Merci encore de ce coup de pouce

Bonjour,

Si tu utilises la méthode Application.Volatile, ta fonction est recalculée chaque fois qu'un calcul est effectué dans une cellule quelconque de la feuille alors qu'une fonction non volatile n'est recalculée qu'en cas de changement des variables d'entrée.

A+

Bonjour,

Bonjour Frangy,

Ma question est pour toi.

Je pensais que Application.Volatile devait être utilisée dans le le cadre d'une fonction personnalisé dans une feuille de calcul.

Me trompe-je?

Utilisée dans une procédure VBA, Application.Volatile, est-il utile?

Cdlt.

Bonjour,

Je suis loin d'être aussi expert que d'autres intervenants ici mais j'avais fait un jour un exercice similaire ( somme de valeur de telle couleur pour telle condition ) avec la fonction lire.cellule. Je mets en pièce jointe le petit fichier. La formule se trouve dans le gestionnaire de noms; ca te sera peut-être utile. Sinon tu peux juste ignorer ce post

Bonne journée,

123get-cel.xlsm (10.72 Ko)

Bonjour Jean-Eric,

Effectivement, comme indiqué dans l'aide, cette méthode n’a aucun effet si elle n’est pas située dans une fonction définie par l’utilisateur servant à calculer une cellule de feuille de calcul.

Dans le cas présenté par pepsister, il s'agit bien d'une fonction personnelle utilisée dans une cellule pour calculer la somme des cellules ayant des valeurs de couleur de police rouge.

Elle n'est pas appelée par une procédure.

Reste à déterminer si l'utilisation de la méthode Application.Volatile est judicieuse dans son cas, à savoir s'il est nécessaire qu'elle soit recalculée chaque fois qu'un calcul est effectué dans une cellule quelconque de la feuille.

A+

Re,

Merci de ta réponse.

Cdlt.

Rechercher des sujets similaires à "additionner valeurs police verte rouge"