Excel 2003 : somme sous deux conditions (couleur de fond de cellule et - Logiciels - Windows & Software
Marsh Posté le 21-09-2010 à 15:42:25
Hello
C'est tout a fait faisable, il me semblait avoir déjà répondu a ceci ici mais je ne le retrouve pas.
Premiere fonction, qui permet de définir le numéro de couleur sur lequel on va faire la somme. Je pense que tu ne connais pas tous les numéros de couleur, cette fonction sera donc bien pratique :
Code :
|
Ex :
En A1 tu saisis 1, tu mets un fond "Rouge"
En B1 tu saisis la fonction qui retrouve la couleur :
=CouleurSelect(A1)
Et excel te renverra 3
3 c'est rouge
Ensuite, la fonction qui va te permettre de sommer en fonction de la couleur de fond. C'est une simple boucle qui va passer toutes les cellules que tu as sélectionnées, et qui va les aditionner si le fond est de la couleur demandée
Code :
|
Ex:
A1 : 1
A2 : 2 Fond Rouge
A3 : 3
A4 : 4
A5 : 5 Fond Rouge
A6 : 6
A7 : 7
A8 : 8 Fond Rouge
A9 : 9
En B1 :
=SommeCouleur(A:A;CouleurSelect(A2))
* 1er parametre de la fonction qui est la plage sur laquelle tu veux sommer
* 2nd parametre de la fonction. Comme on l'a vu dans l'exemple plus haut, on se sert de la fonction CouleurSelect() pour determiner quelle couleur est a sommer. En effet pour le Rouge ou le Bleu c'est facile. Mais va retrouver le code couleur de "Bleu Ciel" (C'est 33). Donc la on lui dit "Prend la couleur de fond de la cellule A2"
Excel te renvoit bien 15 (2+5+8)
Voila voila, si tu as des questions n'hesite pas
Marsh Posté le 21-09-2010 à 20:31:24
Hello dje69r,
en faite j'ai du mal m'expliquer...lol la fonction de recherche de la couleur de la cellule sera comme tu dis nécessaire...
par contre il y a deux conditions pour faire la somme des cellules identiques :
la 1ère (que tu as déjà détaillé dans ta réponse) est qu'il faut que les cellules possèdent la même couleur de fond, ensuite il faut vérifier si le texte écrit dans ces cellules de mêmes couleurs de fond est identique. ensuite l'idée est de faire la somme de ces cellules identiques pour en connaitre le nombre total...
dans une feuille par exemple :
A1 : bonjour Fond vert
A2 : bonsoir Fond Rouge
A3 : salut Fond jaune
A4 : excel Fond rouge
A5 : bonsoir Fond Rouge
A6 : salut Fond jaune
A7 :
A8 : excel Fond violet
A9 : excel Fond violet
je souhaiterais le total des cellules identiques c'est à dire :
- 1 (cellule) : "bonjour" avec un fond vert
- 2 (cellules) : "bonsoir" avec un fond rouge
- 2 (cellules) : "salut" avec un fond jaune
- 1 (cellule) : "excel" avec un fond rouge
- 3 (cellules) : "excel" avec un fond violet
j'espère avoir été plus clair dans mes explication.
Merci d'avance...
Marsh Posté le 21-09-2010 à 21:31:40
Et ben ?
Tu retranches ceux qui ne sont pas egaux a ton texte avec un Somme.Si...
Pas besoin de vb pour ca... Non ?
Marsh Posté le 23-09-2010 à 08:09:34
le problème est que lorsque dans la cellule il y a un texte, la formule ne fonctionne plus... #valeur!
re-voici mon exemple :
A1 : bonjour Fond vert
A2 : bonsoir Fond Rouge
A3 : salut Fond jaune
A4 : excel Fond rouge
A5 : bonsoir Fond Rouge
A6 : salut Fond jaune
A7 :
A8 : excel Fond violet
A9 : excel Fond violet
A10 : excel Fond violet
je souhaiterais avoir le total des cellules identiques comme ci-dessous :
- 1 (cellule) : "bonjour" avec un fond vert
- 2 (cellules) : "bonsoir" avec un fond rouge
- 2 (cellules) : "salut" avec un fond jaune
- 1 (cellule) : "excel" avec un fond rouge
- 3 (cellules) : "excel" avec un fond violet
encore merci...
Marsh Posté le 23-09-2010 à 10:14:58
Mais tu as quoi dans tes cellules ? Tu veux sommer ou compter le nb d'occurence ?
Donne un vrai exemple stp
Marsh Posté le 23-09-2010 à 10:28:50
Ok, ôtën pour moi, j'avais mal lu...
Donc pour résoudre ton souci :
Code :
|
Donc avec ton exemple, pour connaitre le nb de mot "Excel" en violet, en partant du principe qu'ils sont saisi en colonne A :
=SommeCouleur(A:A ; A8 ; "excel")
* A:A ---)> La plage sur laquelle tu veux faire le test
* A8 ---)> La cellule ayant la couleur de fond qui t'interresse pour le test
* "excel" ---)> Le texte à tester
Excel renvoi bien 3
Marsh Posté le 26-09-2010 à 08:34:30
malheuresement il me retourne comme valeur, #valeur !
pourtant je pense avoir bien déclarer les variables comme suit :
Function SommeCouleur(Plage As Range, CouleurCell As Range, ValTxt)
Dim cellule As Range, TotalSomme As Double
Dim couleur As Range
Application.Volatile True
couleur = CouleurCell.Interior.ColorIndex
For Each cellule In Plage
'si même couleur de fond et si le texte est identique
If cellule.Interior.ColorIndex = couleur And cellule.Value = ValTxt Then
TotalSomme = TotalSomme + 1
End If
Next
aurais-tu une idée du problème ?
Merci
Marsh Posté le 26-09-2010 à 13:13:16
Couleur c'est pas un Range, mais un numerique.
Dim Couleur as integer
Faut tester ce que je te mets avant de l'adapter pr voir justement ce que contiennent les variables.
Marsh Posté le 29-09-2010 à 10:34:35
oui merci, cela fonctionne très bien...
merci encore de ton aide mon pb est résolu !
Marsh Posté le 23-01-2015 à 16:17:12
Bonjour DJ69r,
j'ai utilisé ta fonction et elle marche très bien.
Cependant, j'aimerais l'améliorer mais je ne suis très bon en codage...
Voici ma problématique : Dans la plage à laquelle j'applique la fonction SommeCouleur, il se trouve que j'ai des cellules qui contiennent du texte ou des dates, ce qui affiche un message d'erreur. Ma piste d'amélioration serait de définir dans le code le type de cellules concernées par la somme, à savoir celles qui contiennent des nombres uniquement.
merci d'avance pour ton aide
Marsh Posté le 23-01-2015 à 21:27:04
Hello
Je suis sur mon téléphone, donc faudra peut être adapter
Mais, juste avant le Then, tu mets : AND isnum(cellule.value)
Tiens moi au jus, si ça marche Pas j'irai sur le pc
Édit : en fait, même avec une date ou un nombre ça devrait marcher... VBA ne pose pas de souci il me semble pour comparer deux variables de type different...
Je testerai
Marsh Posté le 26-01-2015 à 11:28:33
Bonjour,
Merci pour ta réponse rapide!
ça ne marche malheureusement pas. J'ai le message d'erreur suivant : " Erreur de compliation : Sub ou Function non définie" avec surlignement de la fonction isnum.
Marsh Posté le 26-01-2015 à 21:12:39
Isnumeric()
http://www.excel-pratique.com/fr/v [...] _suite.php
Marsh Posté le 20-09-2010 à 20:40:04
Bonjour à tous,
je souhaiterais pouvoir faire la somme de toutes les cellules identiques c'est à dire la somme des cellules avec la même couleur de fond (11 couleurs de fond différents) et le texte écrit dans la cellule. n'étant pas un pro en vba, je serais très heureux de savoir si cela est faisable.
Si vous avez besoin d'autres infos, n'hésitez pas...
par avance merci bcp.