Signaler

Excel, somme cellules uniques texte en couleur [Résolu/Fermé]

Posez votre question jps.forum 49Messages postés jeudi 29 novembre 2007Date d'inscription 7 janvier 2015 Dernière intervention - Dernière réponse le 13 juil. 2017 à 11:23 par Kimlast
Bonjour,
Pour la gestion d'une association, j'enregistre dans une colonne les dépenses (chiffres en noir dans la cellule). Quand je reçois le relevé de banque je passe les débits en bleu ou en rouge.

Question comment faire pour avoir uniquement la somme des cellules avec les montants en rouge, idem pour celles en bleu, idem pour celle en noir.
Merci pour vos réponses

Jean Paul
Utile
+13
plus moins
bonjour

Il n'existe pas de fonction permettant de cumuler en fonction des couleurs de la police mais c'est possible avec une fonction personnalisée à mettre dans un module
Public Function cumul_couleur(plage As Range, col As Range)
Dim elm As Object
Application.Volatile
cumul_couleur = 0
For Each elm In plage
    If elm.Font.ColorIndex = col.Font.ColorIndex Then
        cumul_couleur = cumul_couleur + elm.Value
    End If
Next elm
End Function

Pour insérer cette fonction voir l'aide

Pour appeler cette fonction : cumul_couleur(plage à cumuler, cellule avec la couleur à cumuler)
Cette réponse vous a-t-elle aidé ?  
kojak62- 12 juil. 2012 à 09:48
Bonjour,
J'ai le même problème que lasnico88 à savoir "il est impossible de traiter votre question. soit microsoft excel ne trouve pas de fonction equivalente soit l'aide n'est pas installé." et le résultat est une erreur.
Question subsidiaire qui résoudra peut être la précédente : quelle valeur doit-on afficher pour les couleurs ? chiffrée ou le nom ?
D'avance un grand merci pour la réponse.
gbinforme 14213Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 19 octobre 2017 Dernière intervention - 12 juil. 2012 à 09:53
Bonjour kojak62,

même problème même solution relit entièrement le texte.

quelle valeur doit-on afficher pour les couleurs ?
Tu n'as pas tout lu :
Pour appeler cette fonction : cumul_couleur(plage à cumuler, cellule avec la couleur à cumuler)
kojak62- 12 juil. 2012 à 11:47
Merci de ta réponse et excuse-moi d'être un peu bouché :
lorsque tu implantes la fonction dans une cellule en premier elle demande la plage en deuxième elle demande la couleur et là je mets quoi ? rouge.
d'avance merci pour ta réponse
kojak62- 12 juil. 2012 à 11:49
Je viens de comprendre, dans la deuxième valeur, il faut faire référence à une cellule avec la couleur de police de référence !
Ingénieux !
Bravo et merci
Kimlast- 13 juil. 2017 à 11:23
Fonctionne nickel ! Merci beaucoup !
Répondre
Utile
+3
plus moins
Merci,
Mais je suis un simple débutant en VBA, c'est pas première macro et j'ai un peu de mal à ré-écrire la fonction.
En gros, je galère depuis 20 minutes
Pourriez vous m'aider en m'écrivant dans son intégralité la nouvelle fonction.

D'avance MERCI.
Utile
+2
plus moins
bonjour

Pour appeler cette fonction : cumul_couleur(plage à cumuler, cellule avec la couleur à cumuler)

Pour info, la plage des cellules dans la quelle je veux faire la somme des cellules (chiffre police rouge) est D18:AA225,
la cellule ou la somme doit s'afficher est F3.


en F3  =cumul_couleur( D18:AA225;A1)


Tu remplaces A1 par une cellule, n'importe laquelle qui ait la police en rouge, car c'est pour récupérer le code couleur et tu peux la prendre dans la plage de cumuls mais une seule cellule.

Pour les "bleus" tu remplaces A1 par une cellule qui ait la police en bleu et idem pour les noirs ou d'autres couleurs.

Attention c'est l'index de couleur exact qui est pris en compte et si tu as des bleus clairs, marine et autres, seules les polices avec le "bon" bleu, celui de la cellule choisie, seront pris en compte.

Comment fait-on pour lancer la macro?
On ne la lance pas elle fonctionne exactement comme une autre fonction, SOMME par exemple et si tu passes une cellule en police rouge le résultat se mettra à jour automatiquement si tu es en calcul automatique sinon avec F9.
szacm- 5 avril 2012 à 18:58
Bonjour,
je ne comprends pas car une fois que j'ai insérer la formuler, que excel la reconnait, que je l'applique, la somme est toujours 0...
Comment trouver l'erreur ?

Merci beaucoup messieurs
gbinforme 14213Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 19 octobre 2017 Dernière intervention - 5 avril 2012 à 21:08
Bonjour,

Si tes couleurs proviennent d'une mise en forme conditionnelle, cette fonction ne détecte pas il faut utiliser la fonction de la MFC.
Utile
+1
plus moins
Merci gbinforme pour ta réponse
Je maitrise bien excel 2003 mais c'est ma première macro!!
J'ai fais:
- outil, macros, nouvelle macros, nommer la macro (SCR), ok, la pettite fenêtre s'affiche, arreter l'enregistrement.
- outil, macros, macro, SCR, exécuter.
- dans Microsoft VB, "module 2", j'ai collé la macro.
Pour info, la plage des cellules dans la quelle je veux faire la somme des cellules (chiffre police rouge) est D18:AA225,
la cellule ou la somme doit s'afficher est F3.

Comment fait-on pour lancer la macro?
je viens de faire un contrôle et, outil, macros, macro il n'y a rien!!, j'ai du faire des bêtises......
comment fait-on pour tout supprimer ?



Merci pour la réponse
Utile
+1
plus moins
Merci gbinforme ça marche......

Une autre question peut-on renommer la macro? en SCR par exemple et comment faire?
Si j'ai bien compris quand je change la couleur d'une cellule le recalcul n'est pas lancé automatiquement.
Il me semble qu'il existe un raccourci clavier pour lancer un recalcul de la feuille tu le connais?
Merci encore pour ton aide
Jean Paul
Utile
+1
plus moins
bonjour

Une autre question peut-on renommer la macro? en SCR par exemple et comment faire?

La macro qui s'appelle "cumul_couleur" peut être renommée en "SCR" et pour cela il faut ouvrir l'éditeur VBA puis sur la feuille qui la contient faire menu edition / remplacer ou ctrl + h et remplacer tout puis changer les appels formules.

Il me semble qu'il existe un raccourci clavier pour lancer un recalcul de la feuille tu le connais?

oui tout à fait comme je t'avais dit " si tu es en calcul automatique sinon avec F9. " Pour mettre le calcul automatique, menu outils / options /onglet calcul et cocher automatique puis "ok". Ensuite, dès que tu colores c'est à jour !
Utile
+1
plus moins
merci gbinforme pour toutes tes réponses, qui m'ont bien dépannées
Cordialement
Jean Paul
Utile
+1
plus moins
gbinforme le recalcul ne marche pas

Je suis bien en calcul auto!!!, si je fais F9 c'est pareil pas de recalcul.
Il faut que je ferme excel et le relancer pour qu'il y est un recalcul
Par contre si je suis dans: outil - option - calcul et je fais un clic sur calculer maintenant, ça fait un recalcul.

à+
Utile
+1
plus moins
bonjour

je fais un clic sur calculer maintenant, ça fait un recalcul. si je fais F9 c'est pareil pas de recalcul.

Curieux car ta touche F9 ne doit pas fonctionner car si tu regardes c'est "calculer maintenant (F9)"

Même en calcul automatique il est possible que le changement de couleur ne déclenche pas le calcul mais F9 devrait.

Essaie de faire F2 et entrée sur n'importe qu'elle cellule, cela devrait aussi déclencher le calcul.
christobald2- 12 oct. 2009 à 11:57
Bonjour gbinforme,

en exécutant tes consignes, je n'arrive pas à obtenir un résultat.
L'erreur qui m'est affichée est "Erreur due à un nom non valide".

J'ai pourtant collé la macro dans le module 2, et fait appel à la finction dans la cellule : =cumul_couleur(A2:A5;A1)

Merci de ton aide
Christophe
Utile
+1
plus moins
bonjour

Tu as quelle version excel ?

L'erreur t'ai affichée pour quelle action ?
christobald2- 24 oct. 2009 à 16:56
Merci zen de m'aider, et désolé pour le retard !

J'ai une version de Excel 2003.

L'erreur apparait lorsque j'écris la formule dans la cellule. "=cumul_couleur(A2;A3:A10)"

Merci de ton aide,
Christophe
Utile
+1
plus moins
bonjour

As-tu inséré la fonction dans un module ?
Manuesunny- 27 janv. 2010 à 14:59
Bonjour je viens de lire tout ce que vous avez discuter, j'ai le même problème, je ne sais pas comment additionner les couleurs. C'est pour mon travail et surtout pour faire des statistique. Je travail pour en entrepreneur en Excavation, on fait des ponts, des ponceaux, des routes, des égout et de l'aqueduc, en gros. Quand on soumission on estime une somme de sable, de pierre, de tuyaux, tout ses chiffres se retrouve dans un tableur excel, on met en couleur le sable, la pierre, les tuyaux ... et j'aimerais bien me faire un sommaire dans se même classeur pour additionner les quantités approximative. Je suis très bonne en excel, mais niveau macro sa ne fonctionne pas. Je ne sais pas si cela te dérangerais de me faire du step by step pour que je puisse enfin réeussir. Je suis en excel 2003, j'ai compris le principe de ta fonction, c'est que je ne suis pas capable de la copier dans VBA. Je te demande ton aide svp ! Un gros Merci d'avance !

Sun
Utile
+1
plus moins
bonjour

Tu devrais essayer cette procédure et comme c'est une fonction, tu dois l'ins"rer dans un module que tu crées par insertion.

Si tu as un blocage tu n'hésites pas à le dire.
Manuesunny- 27 janv. 2010 à 20:36
Bonjour! Je voulais te remercier, tout a super bien été, il y a avait un problème de sécurité des macros, en enlevant sa, tout fonctionne à merveille, alors je te souhaite une belle journée et je peux te dire que moi ma journée est faite !! Mon patron est super content et sa vient de nous simplifier la tache pour tous nos projets pour les années a venir ! Merci encore une fois !

Sun :-P
Utile
+1
plus moins
Bonjour à tous,

J'ai utilisé cette fonction personnalisé en langage VBA.

Je souhaite sommer les valeurs d'une même colonne en fonction de la couleur.
La formule "cumul_couleur" marche très bien sauf quand j'ai des chiffres et des lettres dans la même colonne ou la cellule somme retourne "#VALEUR".
Je souhaite par exemple sommer une colonne de ce type:
8
7
Int
8
5
ABS
5
DM

Comment faire pour ignorer les lettres et obtenir la somme en fonction des couleurs de police ?

Merci pour votre aide
Utile
+1
plus moins
bonjour

Il suffit de remplacer :
cumul_couleur = cumul_couleur + elm.Value
par un test numeric :
        If IsNumeric(elm.Value) Then cumul_couleur = cumul_couleur + elm.Value
Utile
+1
plus moins
Voilà ce forum m'a donné toutes les douces réponses à mes questions ;) j'en suis arrivé à ça :


Outils/macro/Visual Basic Editor ---> Insertion/module

Pour trouvé la somme des cellules contenant des chiffres avec le même format que A1 :

Public Function cumul_couleur(plage As Range, col As Range)

Dim elm As Object
Application.Volatile
cumul_couleur = 0
For Each elm In plage
If elm.Font.ColorIndex = col.Font.ColorIndex Then
'cumul_couleur = cumul_couleur + elm.Value
If IsNumeric(elm.Value) Then cumul_couleur = cumul_couleur + elm.Value

End If
Next elm

End Function


Et pour trouvé le nombre de cellule contenant des chiffres avec le même format que A1 :

Public Function cumulcouleur(plage As Range, col As Range)

Dim elm As Object
Application.Volatile
cumulcouleur = 0
For Each elm In plage
If elm.Font.ColorIndex = col.Font.ColorIndex Then
'cumulcouleur = cumulcouleur + 1

If IsNumeric(elm.Value) Then cumulcouleur = cumulcouleur + 1

End If
Next elm



Ensuite il m'a suffit d'ajouter dans n'importe qu'elle cellule de ma feuille soit

=cumul_couleur(A1:A22;A1)

soit

=cumulcouleur(A1:A22;A1)

En fonction de mes envies ! :)

Voili voilà j'espère que j'ai pu t'aider !

Bonne journée !
Antoine- 2 mai 2014 à 19:36
Bonjour,

Je viens de découvrir cette fonction qui est très utile mais lors de l'essai de celle ci, elle ne fonctionne qu'avec les chiffres et j'aimerais savoir si c'est possible de le faire avec du texte et si oui comment?

Merci d'avance pour
vos réponses
gbinforme 14213Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 19 octobre 2017 Dernière intervention - 2 mai 2014 à 21:47
Bonjour,

Effectivement la demande était " la somme des cellules avec les montants en rouge" et si tu veux compter le nombre de cellules d'une couleur, tu remplaces :
        cumul_couleur = cumul_couleur + elm.Value
par
        cumul_couleur = cumul_couleur + 1
et si tu veux compter les fonds au lieu des polices tu remplaces "Font" par "Interior"
Utile
+0
plus moins
Je comprend rien
Utile
+0
plus moins
je sais que ça fait un moment que ce sujet a été posté mais j'ai fait ce que vous a écrit et ça marche ! je voulais vous remercier car c'est super comme outil ! :)
Utile
+0
plus moins
Bonjour,

je ne comprends pas car une fois que j'ai insérer la formuler, que excel la reconnait, que je l'applique, la somme est toujours 0...
Comment trouver l'erreur ?

Merci beaucoup messieurs
Utile
+0
plus moins
Public Function cumul_couleur(plage As Range, col As Range)
Dim elm As Object
Application.Volatile
cumul_couleur = 0
For Each elm In plage
If elm.Font.ColorIndex = col.Font.ColorIndex Then
cumul_couleur = cumul_couleur + elm.Value
End If
Next elm
End Function


Bonjour,

comment modifier le code pour rentrer directement dans la commande une couleur a rechercher, plutôt que d'aller la chercher dans une cellule donnée ?

Merci d'avance pour votre aide

Max
gbinforme 14213Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 19 octobre 2017 Dernière intervention - 16 févr. 2017 à 11:55
Bonjour,

Tu enlèves
, col As Range

et tu remplaces
col.Font.ColorIndex
par ton code recherché, par exemple 3 pour rouge.
Répondre
MaxEsther 6Messages postés vendredi 11 novembre 2016Date d'inscription 17 février 2017 Dernière intervention - 17 févr. 2017 à 09:58
Problème avec

Public Function cumul_couleur2(plage As Range, col.Font.ColorIndex)

(Erreur de ompilation ; Attendu : séparateur de liste ou )

ou
Public Function cumul_couleur2(plage As Range, col As col.Font.ColorIndex)

(Type défini par l'utilisateur non défini)
Répondre
gbinforme 14213Messages postés lundi 18 octobre 2004Date d'inscription ContributeurStatut 19 octobre 2017 Dernière intervention - 17 févr. 2017 à 10:14
Bonjour,

Lorsque l'on ne lit pas correctement, tu ne peux faire que n'importe quoi
Public Function cumul_couleur(plage As Range)
Dim elm As Object
Application.Volatile
cumul_couleur = 0
For Each elm In plage
    If elm.Font.ColorIndex = 3 Then
        cumul_couleur = cumul_couleur + elm.Value
    End If
Next elm
End Function

Cela ne compte que les rouge bien sûr !
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !