Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
956 connectés 

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Excel 2003 : somme sous deux conditions (couleur de fond de cellule et

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Excel 2003 : somme sous deux conditions (couleur de fond de cellule et

n°2962251
lahoucine2
Posté le 20-09-2010 à 20:40:04  profilanswer
 

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.

mood
Publicité
Posté le 20-09-2010 à 20:40:04  profilanswer
 

n°2962351
SuppotDeSa​Tante
Aka dje69r
Posté le 21-09-2010 à 15:42:25  profilanswer
 

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 :
  1. Function CouleurSelect(Cellule As Range)
  2.     CouleurSelect = Cellule.Interior.ColorIndex
  3. End Function

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 :
  1. Function SommeCouleur(Plage As Range, Couleur As String)
  2.     Application.Volatile True
  3.     For Each Cellule In Plage
  4.         If Cellule.Interior.ColorIndex = Couleur Then TotalSomme = TotalSomme + Cellule.Value
  5.     Next
  6.     SommeCouleur = TotalSomme
  7. End Function

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 ;)


Message édité par SuppotDeSaTante le 21-09-2010 à 15:46:48

---------------
Soyez malin, louez entre voisins !
n°2962397
lahoucine2
Posté le 21-09-2010 à 20:31:24  profilanswer
 

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...

n°2962405
SuppotDeSa​Tante
Aka dje69r
Posté le 21-09-2010 à 21:31:40  profilanswer
 

Et ben ?
Tu retranches ceux qui ne sont pas egaux a ton texte avec un Somme.Si...
Pas besoin de vb pour ca... Non ?


---------------
Soyez malin, louez entre voisins !
n°2962546
lahoucine2
Posté le 23-09-2010 à 08:09:34  profilanswer
 

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...

n°2962547
lahoucine2
Posté le 23-09-2010 à 08:15:25  profilanswer
 

je ne sais pas si ma réponse a bien été envoyé...

n°2962553
SuppotDeSa​Tante
Aka dje69r
Posté le 23-09-2010 à 10:14:58  profilanswer
 

Mais tu as quoi dans tes cellules ? Tu veux sommer ou compter le nb d'occurence ?
 
Donne un vrai exemple stp


---------------
Soyez malin, louez entre voisins !
n°2962555
SuppotDeSa​Tante
Aka dje69r
Posté le 23-09-2010 à 10:28:50  profilanswer
 

Ok, ôtën pour moi, j'avais mal lu...
 
Donc pour résoudre ton souci :

Code :
  1. Function SommeCouleur(Plage As Range, CouleurCell As Range, ValTxt)
  2.     Application.Volatile True
  3.     Couleur = CouleurCell.Interior.ColorIndex
  4.    
  5.     For Each Cellule In Plage
  6.         If Cellule.Interior.ColorIndex = Couleur And Cellule.Value = ValTxt Then
  7.             TotalSomme = TotalSomme + 1
  8.         End If
  9.     Next
  10.     SommeCouleur = TotalSomme
  11. End Function


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


Message édité par SuppotDeSaTante le 23-09-2010 à 10:30:40

---------------
Soyez malin, louez entre voisins !
n°2962851
lahoucine2
Posté le 26-09-2010 à 08:34:30  profilanswer
 

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

n°2962871
SuppotDeSa​Tante
Aka dje69r
Posté le 26-09-2010 à 13:13:16  profilanswer
 

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.


---------------
Soyez malin, louez entre voisins !
mood
Publicité
Posté le 26-09-2010 à 13:13:16  profilanswer
 

n°2963298
lahoucine2
Posté le 29-09-2010 à 10:34:35  profilanswer
 

oui merci, cela fonctionne très bien...
merci encore de ton aide mon pb est résolu !

n°2963354
SuppotDeSa​Tante
Aka dje69r
Posté le 29-09-2010 à 20:29:42  profilanswer
 
n°3156282
nirta
Posté le 23-01-2015 à 16:17:12  profilanswer
 

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

n°3156420
SuppotDeSa​Tante
Aka dje69r
Posté le 23-01-2015 à 21:27:04  profilanswer
 

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


Message édité par SuppotDeSaTante le 23-01-2015 à 21:32:29

---------------
Soyez malin, louez entre voisins !
n°3156930
nirta
Posté le 26-01-2015 à 11:28:33  profilanswer
 

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.
 

n°3156935
nirta
Posté le 26-01-2015 à 11:38:55  profilanswer
 

Aurais tu une idée du probleme?!
D'avance merci

n°3157065
SuppotDeSa​Tante
Aka dje69r
Posté le 26-01-2015 à 21:12:39  profilanswer
 
n°3157189
nirta
Posté le 27-01-2015 à 15:46:57  profilanswer
 

Merci beaucoup, la fonction marche bien!

n°3157560
SuppotDeSa​Tante
Aka dje69r
Posté le 29-01-2015 à 22:14:33  profilanswer
 

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Excel 2003 : somme sous deux conditions (couleur de fond de cellule et

 

Sujets relatifs
Migration NT4<>20032003 Server - Installation de Cacti
Livres Excel et AccessExcel: incrémenter un nombre spécifique dans une formule
Relation d'approbation NT4<>2003[RESOLU] Classement dans l'ordre croissant dans Excel
Résolu [Excel] reconnaitre des doublons[Excel 2007] Les Raccourcis ne marchent pas
Problème modifier fichier excel lié dans ACCESS 2003 
Plus de sujets relatifs à : Excel 2003 : somme sous deux conditions (couleur de fond de cellule et


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR