Somme_si_couleur ne s'actualise pas

Bonjour

Dans un précédent post, Peka m'avait indiqué quel code utiliser pour effectuer des calculs à partir de la couleur des cellules contenant les valeurs.

J'ai appliqué ce code sur un fichier créé par un autre, fichier que j'ai aménagé en fonction des besoins du moment.

Les cellules contenant les formules sont verrouillées ; les feuilles sont protégées.

Lorsque je saisis dans une cellule une valeur et que j'attribue la couleur reprise dans la formule de calcul, le résultat du calcul ne s'actualise pas. Pourtant, la couleur attribuée est exactement la même et les "options de calcul" sont bien en "automatique".

Par contre, le résultat s'actualise si je "glisse" ou "copie/colle" le contenu d'une cellule qui contient la bonne couleur.

Quelqu'un saurait-il me dire pourquoi ? Et comment résoudre ce problème...

Merci par avance.

Bonjour,

La couleur est définie comment ? Si c'est avec une MFC ça ne fonctionnera pas, si par contre c'est en "manuel", il n'y a pas de raison que ça ne marche pas.

Un fichier pourrait aider !

Hervé.

Bonjour

Ce n'est pas une MFC (... si MFC est "mise en forme conditionnelle"...).

J'ai ce code-ci dans un module :

Function SOMME_SI_COULEUR(PlageSomme As Range, PlageCouleur As Range) As Variant

'*********************************************************

' Effectuer la somme des cellules en couleur *

'*********************************************************

Dim Cel As Range

Dim Som As Double

If PlageCouleur.Cells.Count > 1 Then

SOMME_SI_COULEUR = CVErr(xlErrValue)

Exit Function

End If

For Each Cel In PlageSomme

If Cel.Interior.ColorIndex = PlageCouleur.Interior.ColorIndex Then Som = Som + Cel

Next

SOMME_SI_COULEUR = Som

End Function

Ci-joint un fichier exemple.

Merci de ton aide

82exemple.xlsm (19.75 Ko)

Bonjour le fil

L'option "Volatile" n'est pas mise dans ta fonction

Application.Volatile, méthode

Cette méthode marque comme volatile une fonction personnalisée. Une fonction volatile doit être recalculée chaque fois qu'un calcul est effectué dans une cellule quelconque de la feuille de calcul. Une fonction non volatile n'est recalculée qu'en cas de changement des variables d'entrée. Cette méthode est sans effet si elle ne se trouve pas à l'intérieur d'une fonction définie par l'utilisateur utilisée pour calculer une cellule de feuille de calcul.

Function SOMME_SI_COULEUR(PlageSomme As Range, PlageCouleur As Range) As Variant
  '*********************************************************
  ' Effectuer la somme des cellules en couleur *
  '*********************************************************
  Dim Cel As Range
  Dim Som As Double
  ' Ne pas oublier l'option de recalcul automatique
  Application.Volatile
  '
  If PlageCouleur.Cells.Count > 1 Then
    SOMME_SI_COULEUR = CVErr(xlErrValue)
    Exit Function
  End If
  For Each Cel In PlageSomme
    If Cel.Interior.ColorIndex = PlageCouleur.Interior.ColorIndex Then Som = Som + Cel
  Next
  SOMME_SI_COULEUR = Som
End Function

A+

Bonjour

Je ne connais pas l'option "volatile"... je l'ai ajoutée ! Merci.

Mais... ça ne met pas plus les totaux à jour quand j'interviens sur une cellule vide à l'origine

47exemple.xlsm (17.64 Ko)

Re,

Vérifie ton option de calcul automatique

Chez moi je n'ai aucun problème

A+

Bonjour,

BrunoM45 a écrit :

Re,

Vérifie ton option de calcul automatique

Chez moi je n'ai aucun problème

A+

Mieux que ça, cela fonctionne même avrec LibreOffice Calc.

Le calcul automatique est bien sélectionné...

Le calcul s'actualise si je fais maj+F9... alors que le calcul automatique est bien sélectionné...

33exemple.pdf (137.11 Ko)

Re,

hatusu a écrit :

Le calcul automatique est bien sélectionné...

Le calcul s'actualise si je fais maj+F9... alors que le calcul automatique est bien sélectionné...

Un BUG Excel 2013

PS : Qu'est-ce qu'elle est vraiment moche cette interface

OK... merci.

On va tous faire MAJ+F9 à chaque saisie

C'est quand même bizarre que cela ne fonctionne pas chez toi...

Essayes en rajoutant une fonction volatile comme ALEA :

=SOMME_SI_COULEUR(C3:G3;$B$6)+0*ALEA()

A+

Bonjour

Merci.. je viens de tester : même résultat.

Le fichier a été travaillé sur Excel 2013 au bureau. Il fonctionne chez BrunoM45. Je l'ai donc testé chez moi (Excel 2010) : ça ne fonctionne pas.

Bonjour

Je viens de faire un test (supplémentaire) : si j'attribue la couleur à la cellule et qu'ensuite, j'y saisis un chiffre, le calcul s'actualise. Si je saisis d'abord le chiffre et que je mets la couleur ensuite, il ne s'actualise qu'avec MAJ+F9.

Est-ce un "comportement" normal ? Faut-il aménager le code ?

Merci.

Bonjour Hatusu,

Oui, c'est un comportement normal.

La saisie d'une valeur est événement change pour Excel

ce qui lance l'actualisation du calcul

Le changement de couleur d'une cellule n'est pas un événement "physique"

juste de la "décoration"

A+

Bonjour BrunoM45

Merci pour ton explication. Il ne me reste plus qu'à compléter mon fichier avec un petit "mode d'emploi" pour mes collègues utilisateurs...

Bonjour,

Pour compléter ta feuille ... tu peux avoir dans une cellule =Maintenant() ... dans le but de "forcer" le calcul ...

Salut James007

James007 a écrit :

Bonjour,

Pour compléter ta feuille ... tu peux avoir dans une cellule =Maintenant() ... dans le but de "forcer" le calcul ...

Bonne idée, mais le problème reste entier si la couleur est mise après la saisie du chiffre

Cordialement.

BrunoM45 a écrit :

Salut James007

James007 a écrit :

Bonjour,

Pour compléter ta feuille ... tu peux avoir dans une cellule =Maintenant() ... dans le but de "forcer" le calcul ...

Bonne idée, mais le problème reste entier si la couleur est mise après la saisie du chiffre

Cordialement.

Salut Bruno,

Y-a-t-il un évènement Worksheet_Calculate dans le module de cette feuille ...???

Bonjour

La couleur peut effectivement être mise après la valeur...

Pour ce qui est du "worksheet calculate", je ne sais pas ce que c'est...

Rechercher des sujets similaires à "somme couleur actualise pas"