Changement de couleur cellule : calcul automatique
Résolu
Philifloche
Messages postés
16
Statut
Membre
-
Philifloche Messages postés 16 Statut Membre -
Philifloche Messages postés 16 Statut Membre -
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.
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
-
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) .
-
bonsoir,
Pourrais-tu mettre un fichier anonymisé à la disposition, avec des explications
Slts -
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-
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 !
:) -
-
-
Re
tiens, tiens pourtant chez moi le lien fonctionne
nouvel essai
https://www.cjoint.com/c/HBxjjBrqmdj
Slts -
-