Changement de couleur cellule : calcul automatique

Résolu/Fermé
Philifloche Messages postés 14 Date d'inscription dimanche 11 février 2018 Statut Membre Dernière intervention 5 mars 2018 - Modifié le 11 févr. 2018 à 13:10
Philifloche Messages postés 14 Date d'inscription dimanche 11 février 2018 Statut Membre Dernière intervention 5 mars 2018 - 23 févr. 2018 à 10:52
Bonjour,

J'utilise la formule suivante pour faire des sommes de cellules de couleurs différentes dans une même plage :

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


La formule fonctionne bien, mais les totaux ne se mettent pas à jour quand je change juste la couleur de fond d'une cellule de la plage.

Si quelqu'un a une réponse, je suis preneuse.

Merci.

3 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
Modifié le 11 févr. 2018 à 20:31
Bonjour,

Il n'existe pas d'évènement exploitable lors du changement de couleur d'une cellule, donc pas de solution miracle !

On peut améliorer la fréquence de calcul en ajoutant Application.volatile (ligne 7) pour que la fonction soit calculée à chaque modification du contenu d'une cellule, même si ça ne concerne pas la plage de la fonction :
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
  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

Mais ce n'est pas suffisant, on peut aussi provoquer le calcul au changement de cellule sélectionnée en ajoutant dans le module de la feuille :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Application.Calculate
End Sub

C'est pas l'idéal mais c'est déjà mieux.

On pourrait aussi utiliser OnTime mais c'est plus lourd (et inutilement chronophage) .


1
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
12 févr. 2018 à 00:56
Bonjour,

On peut améliorer la fréquence de calcul en ajoutant Application.volatile (ligne 7) pour que la fonction soit calculée à chaque modification du contenu d'une cellule
ou avec F9
eric
0
Philifloche Messages postés 14 Date d'inscription dimanche 11 février 2018 Statut Membre Dernière intervention 5 mars 2018
12 févr. 2018 à 09:51
Bonjour,

Merci beaucoup, mais ça ne solutionne pas vraiment mon souci. :) Je ne touche plus au contenue des cellules une fois créées. Je change simplement la couleur.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
12 févr. 2018 à 11:10
Bonjour,

Dans ce cas s'adresser à MS qu'ils fassent évoluer excel et ajoutent des événements.
Pas d'autre solution actuellement que ce vient de t'expliquer Patrice.
eric
0
The_boss_68 Messages postés 922 Date d'inscription dimanche 15 novembre 2015 Statut Membre Dernière intervention 31 mars 2024 174
11 févr. 2018 à 22:21
bonsoir,

Pourrais-tu mettre un fichier anonymisé à la disposition, avec des explications

Slts
0
Philifloche Messages postés 14 Date d'inscription dimanche 11 février 2018 Statut Membre Dernière intervention 5 mars 2018
12 févr. 2018 à 09:53
Bonjour,
C'est mon premier post sur ce forum. Je ne sais pas comment mettre un fichier... :)
0
The_boss_68 Messages postés 922 Date d'inscription dimanche 15 novembre 2015 Statut Membre Dernière intervention 31 mars 2024 174
12 févr. 2018 à 17:42
Bonjour,

1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien
en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans ta discussion sur CCM , et dans ton message de réponse tu fais "Coller"

Slts
0
Philifloche Messages postés 14 Date d'inscription dimanche 11 février 2018 Statut Membre Dernière intervention 5 mars 2018
23 févr. 2018 à 09:48
Bonjour,

Désolée pour la réponse tardive ; j'ai du m'absenter quelques jours. Voilà le lien : https://www.cjoint.com/c/HBxiUjTvJ3J
Merci pour ton aide !
:)
0
The_boss_68 Messages postés 922 Date d'inscription dimanche 15 novembre 2015 Statut Membre Dernière intervention 31 mars 2024 174
23 févr. 2018 à 10:01
Bonjour,

Et comme ça? GO

Slts
0
Philifloche Messages postés 14 Date d'inscription dimanche 11 février 2018 Statut Membre Dernière intervention 5 mars 2018
23 févr. 2018 à 10:03
Impossible d'ouvrir le fichier.
0
The_boss_68 Messages postés 922 Date d'inscription dimanche 15 novembre 2015 Statut Membre Dernière intervention 31 mars 2024 174
23 févr. 2018 à 10:11
Re

tiens, tiens pourtant chez moi le lien fonctionne

nouvel essai

https://www.cjoint.com/c/HBxjjBrqmdj

Slts
0
Philifloche Messages postés 14 Date d'inscription dimanche 11 février 2018 Statut Membre Dernière intervention 5 mars 2018
23 févr. 2018 à 10:15
Même souci. Voilà le message affiché quand je tente d'ouvrir le fichier : "Désolé... Nous avons rencontré un problème dans le contenu de « HBxjjBrqmdj_forum-Test.xlsm »"
0