EXCEL - somme automatique sur chgt de couleur
laurent77
-
néné -
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
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
A voir également:
- Sumbycolor excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Si ou excel - Guide
- Déplacer colonne excel - Guide
- Comment trier par ordre alphabétique sur excel - Guide
10 réponses
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
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
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
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
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
Merci de ton aide.
Laurent
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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...
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...
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
-------------------------------
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
Bjr
met ceux ci en événementionnel
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub
met ceux ci en événementionnel
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub