EXCEL - somme automatique sur chgt de couleur

Fermé
Signaler
-
 néné -
Bonjour,

Je suis à la recherche d'un expert pour une problématique sous excel. En effet, j'ai un tableau qui contient toujours les mêmes valeurs. Dans ce tableau, la valeur prise en compte dans chaque cellule est manuelle et symbolisée par un changement de couleur. Par exemple, si j'ai un cellule contenant une valeur qui n'a pas encore été utilisé, la couleur sera jaune et une fois utilisée, la personne en charge de ce fichier la passera à la couleur verte. Je voudrais que ce changement de couleur soit vienne compléter la somme automatique gérée en fin de colonne..j'éspère avoir été clair dans mes explications.

Merci

laurent

10 réponses

Messages postés
513
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
20 novembre 2011
189
par exemple, compter le nombre de cellules vertes ?
0
je veux taider mais vraiment jai pas compris si tu peux etre plus clair
0
Bonjour,

Merci de ton aide.

L'idée est de valider une cellule "somme automatique" si et seulement si la ou les cellules concernées sont dans une couleur précise.
par exemple, par défaut toutes les cellules d'une colonne sont blanches, de ce fait la cellule qui fait le totale est vide. lorsque je change
la couleur d'une des cellule pour une couleur fixe, je veux que la cellule qui fait le total fasse la somme de cette dernière plus celle des autres qui pourraient changer de couleur par la suite...

tu vois un peu mieux ?

laurent
0
Messages postés
513
Date d'inscription
dimanche 30 décembre 2007
Statut
Membre
Dernière intervention
20 novembre 2011
189
0
Bonjour et merci de ton aide. Cela fonctionne mais comment faire pour que cela soit dynamique à chaque changement de couleur de cellule ? je pensais à la notion de LOOP avec un arrêt quand toutes les cellules sont jaunes par exemple mais comment faire ?

Merci de ton aide.

Laurent
0
bJR

Voici une fonction VBA personnalisée qui fait la somme de valeur qui sont dans des cellules blanches


Function SOMMECOULEUR(PLAGE As Range) As Double
Application.Volatile
Dim Cellule As Range
Dim TOTALPARTIEL As Double
TOTALPARTIEL = 0
For Each Cellule In PLAGE.Cells
If Cellule.Interior.ColorIndex = 2 Then '2 égal blanc
TOTALPARTIEL = TOTALPARTIEL + Cellule.Value
End If
Next Cellule
SOMMECOULEUR = TOTALPARTIEL
End Function
0
Merci pour la fonction, cela marche très bien. La particularité avec cette fonction s'est qu'elle ne semble pas être dynamique. En effet, elle fonctionne très bien si je prends une colonne pour laquelle je ne fais pas de modification mais j'aimerai que la fonction recalcule si je change à n'importe quel moment la couleur d'une cellule. Je me demandais si la notion de loop ne marcherait pas dans ce cas ? de plus, il y a un paramètre de fin puisque si toute les cellules de la plage sont en jaune par exemple, la fonction peut s'arrêter et la somme sera 0 !

Merci de ton aide.

Laurent
0
Bonjour à tous,

pour rendre dynamique la plage B2:F17 en utilisant la proposition de Néné (je compte le rouge plus facile à voir!!!) par macro événementielle

a copier coller dans le module feuille (clic droit sur l'onglet de la feuille et "visualiser le code"

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("B2:F17")) Is Nothing Then: Exit Sub
Dim Cellule As Range
Dim TOTALPARTIEL As Double
TOTALPARTIEL = 0
For Each Cellule In Range("B2:F17").Cells
If Cellule.Interior.ColorIndex = 3 Then '2 égal blanc
TOTALPARTIEL = TOTALPARTIEL + Cellule.Value
End If
Next Cellule
Range("H2") = TOTALPARTIEL
End Sub

en espèrant que...
0
Bonjour,

Merci de ton aide mais une fois le code copié dans ma feuille, comment fais-je appelle à cette fonction ?

laurent
0
Cela semble ne pas fonctionner ! merci de ton aide
0
Messages postés
16547
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
19 janvier 2022
3 258
re,

sur une cellule avec une valeur, passe la couleur en rouge
0
J'ai trouvé une fonction qui fonctionne très bien mais pas de manière dynamique....

-------------------------------
Function SumByColor(PlageEntree As Range, CouleurPlage As Range) As Double
Dim Cell As Range, TempSum As Double, ColorIndex As Integer
ColorIndex = CouleurPlage.Cells(1, 1).Interior.ColorIndex
TempSum = 0
On Error Resume Next
For Each Cell In PlageEntree.Cells
If Cell.Formula < > "" Then
If Cell.Interior.ColorIndex = ColorIndex Then TempSum = TempSum + _
Cell.Value
End If
Next Cell
On Error GoTo 0
Set Cell = Nothing
SumByColor = TempSum
End Function
----------------------------------------

Si quelqu'un à une solution !

merci
0
Bjr

met ceux ci en événementionnel

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub
0
Bonsoir,

Je dois vraiment être une tange mais je ne comprends pas ta réponse....

Que veux-tu dire par:
---
met ceux ci en événementionnel

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub
---

Donne moi un exemple, c'est quoi en évenementionnel ???

Merci de ton aide
0
Messages postés
14
Date d'inscription
mardi 1 janvier 2008
Statut
Membre
Dernière intervention
4 janvier 2008
5
Bonjour,
Je n'ai pas très bien compris ton problème, mais essaie format-Mise en forme conditionnelle, sur les cellules que tu veux. Tu peux faire en sorte qu'Excel modifie la couleur de certaines cellules automatiquement suivant les critères que tu as définis.
Bonne chance,
@ +
0
bjr


Clic droit l'onglet de la page ou ce trouve tes valeurs puis "Visualiiser le code"

copie ce code en dessous General




Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub


puis ferme la fenetre
0