Les Allergies
Alimentaires
Posez votre question Signaler

Macro couleur Excel [Résolu]

Lysandre 44Messages postés 5 novembre 2005Date d'inscription 19 mai 2012Dernière intervention - Dernière réponse le 6 déc. 2009 à 11:12
Bonjour à tous,
Je souhaiterais savoir s'il est possible était possible de créer des macros sous Excel en faisant références à des couleurs de cellules.
Je m'explique, dans une colonne j'ai plusieurs valeurs en euro correspondantes à plusieurs produits.
selon les caractéristique des produits la couleur de cellule est différente.
Je voudrais faire la somme des valeurs selon la couleur de cellule.
J'espère avoir été clair
Merci pour vos réponses ;-)
@+
lysandre
Lire la suite 

Macro couleur Excel »

Suggestions
21 réponses
Réponse
+1
moins plus
Il faut que le fichier ayant la fonction personnalisée soit ouvert quand tu l'utilises.
Le mieux est de l'inclure dans ton fichier que ton correspondant l'aie si tu envoies ton fichier.

Clic-droit sur un nom d'onglet de ton classeur, choisir 'visualiser le code',
Dans vba :
- à gauche clic-droit sur ton projet, 'insérer / module'
- double-clic sur le module
- dans la fenetre d'édition à droite coller le code :
Function SommeCouleur(plage, couleur)
    Dim coul As Integer, c As Range
    coul = couleur.Interior.ColorIndex
    For Each c In plage
        If c.Interior.ColorIndex = coul Then
            SommeCouleur = SommeCouleur + c.Value
        End If
    Next c
End Function


eric
Ajouter un commentaire
Réponse
+0
moins plus
Salut,

Oui c'est possible, faudrait voir comment tu colorises tes cellules, manuellement, avec un Mise en forme conditionnelle et dans ce cas quelle est la formule qui conditionne cette emise en forme ou par VBA.

Le plus simple serait de mettre sur un post ton fichier sans données confidentielles que l'on voit.

Pour joindre ton fichier, avec ce lien

http://www.cjoint.com/
Lysandre- 5 déc. 2009 à 13:06
Merci Mike-31 pour ta réponse

Voila un fichier exemple : http://cjoint.com/?mfngo8hvpa

Imaginons des produits situés sur plusieurs zones.

Selon les zones nous avons des couleurs de cellules différentes.

Sur la droite je souhaite calculer la somme des produits d'une même zone en tenant compte de la couleur de la cellule.

Il ne faudrait pas tenir compte des zones pour le calcul.

Es-ce possible ?

merci

Lysandre
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Comme mike n'a pas l'air de revenir du marché voici une proposition par fonction personnalisée :
SommeCouleur.xls
Tu fais 'insertion / fonction..', catégorie 'personnalisée et tu choisis SommeCouleur,
dans 'plage' tu sélectionnes la plage à sommer,
dans 'couleur' tu sélectionne une cellule qui a la couleur de fond qui t'interesse.

Cette fonction est à coller dans un module de ton classeur

eric
Ajouter un commentaire
Réponse
+0
moins plus
Salut Eriiic,

Merci d’avoir pris le relais, je vais tout de même jeter un œil sur ce fichier.

Comment sais tu que j'étais au marché, (comme tous les samedis), tu es devin, trop fort cet Eriiic,

Bon week-end
eriiic- 5 déc. 2009 à 16:08
Ah !!! je ne t'avais pas parlé de mon don de devin ? Un oubli sans doute ;-)
Ajouter un commentaire
Réponse
+0
moins plus
Salut Lysandre,

Outre la proposition d'Eriiic,
je remarque que tu attribues une couleur par zone, tu peux utiliser une fonction d'Excel SOMMEPROD, exemple la formule ci-dessous pour la zone A qui correspond à une zone bleu

=SOMMEPROD($C$7:$C$50*($A$7:$A$50="Zone A"))

Récupères ton fichier avec les explications

http://cjoint.com/?mfoOMUQHjM
Ajouter un commentaire
Réponse
+0
moins plus
Merci eriiic pour ta participation

La formule que tu as utilisé me plais seulement dès que j'utilise SommeCouleur comme indiqué sur ton exemple le code erreur #NOM? apparait dans la cellule et Excel corrige automatiquement le S majuscule de Somme en minuscule.

Merci Mike pour ton aide, je souhaiterais ne pas utiliser les zones(ici pour exemple) pour le tri mais la couleur des cellules

Encore merci à vous deux

Lysandre
Ajouter un commentaire
Réponse
+0
moins plus
Génial Eric

Exactement ce qu'il me fallait

Un grande remerciement de ma part.

Tu as gagné le trophée du problème de Lysandre.

Amicalement

Lysandre
Ajouter un commentaire
Réponse
+0
moins plus
Euh!

Un dernier détail sans vouloir abuser.

Le système de calcul fonctionne très bien seulement quand je change une couleur dans une cellule le calcul ne s'effectue pas automatiquement.

Peut-on régler ce problème ?

Merci
Ajouter un commentaire
Réponse
+0
moins plus
Oui, un petit oubli, désolé.
Ajoute Application.Volatile au début du code.
La fonction sera réévaluée au prochain recalcul (n'importe quelle saisie dans la feuille ou par F9)
eric
Ajouter un commentaire
Réponse
+0
moins plus
Re,

Regardes tout en VBA avec un code simple qui pilote le comptage en G9, 13,15 et 19

http://cjoint.com/?mfrpiVmW5J
Ajouter un commentaire
Réponse
+0
moins plus
Comment faire une application volatile ?

Mike, j'ai copié tes données mais sans résultats

Lysandre
Mike-31- 5 déc. 2009 à 22:01
Re,

Comme au poker, je suis

Comment as tu fait pour copier le code, le code est à coller dans les propriétés de la feuille de sorte que les sommes s'actualisent dès que tu déplaces la cellule active sur ta feuille

Pour cela clic droit sur l’onglet de feuille concernée (regarde sur l’exemple joint).

Il est possible d’écrire ce code différemment mais j’ai préféré un code basique plus facile à adapter, que j’ai encore simplifié.
En début du code déclaration des variables
Ensuite chaque partie de code concernant une couleur est séparé pour te permettre de suivre le facilement code
La cellule ou sera inscrit chaque couleur sert également de référence de la couleur (il suffit de coloriser cette cellule de la couleur des sommes à additionner

http://cjoint.com/?mfwaupwfgl
Ajouter un commentaire
Réponse
+0
moins plus
Ajoute Application.Volatile au début du code.
donc :
Function SommeCouleur(plage, couleur)
    Dim coul As Integer, c As Range
    Application.Volatile
    coul = couleur.Interior.ColorIndex
    For Each c In plage
        If c.Interior.ColorIndex = coul Then
            SommeCouleur = SommeCouleur + c.Value
        End If
    Next c
End Function
Ajouter un commentaire
Réponse
+0
moins plus
Désolé Mike je ne suis pas expert en macro, à chacun ses spécialités.
Je vais tenter d'appliquer vos méthodes demain et une fois de plus merci à vous.
bien sûr je vous tiens informés.

amicalement

lysandre
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour tout le monde,

Lysandre, tu devrais regarder de plus près la proposition du post 5 de mike.
Si tu dois saisir la zone en colonne A, tu peux obtenir la couleur par une mise en forme conditionnelle (si tu en as toujours besoin), et le total par un sommeprod().
Et plus besoin de vba, y compris la fonction personnalisée.
J'avoue que je n'avais pas regardé de près ton tableau et que vba n'est pas absolument nécessaire.

eric
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour Eric,

Il ne faut pas tenir compte des zones.
En fait le fichier concerné en un relevé de commande client.
j'ai pris l'exemple d'article pour que ce soit plus clair.

Nous avons un tableau sur lequel nous suivons la prospection commerciale via des couleurs dans les cellules.
Ex:
- Jaune => client contacté
- Rouge => refus
- vert => commande
a cela s'ajoute par client l'achat de marchandise, la vente, la marge, le coef ...

Sur mon exemple il y a 4 zones mais dans mon fichier chaque produit est différent c'est pourquoi nous voulons nous servir de la couleur de cellule comme base de tri.

La proposition que tu m'as présenté me convient très bien, seulement le calcul n'est pas immédiat après le changement de cellule.

J'ai copié ton deuxième prog et collé dans un deuxième module cela ne change rien et quand je fais F9 le message d'erreur "Nom ambigu détecté : SommeCouleur" apparait.
Je pense ne tu n'est pas loin de la solution

Lysandre
Ajouter un commentaire
Réponse
+0
moins plus
C'est parce que function sommecouleur(...) est présent 2 fois.
Supprime l'ancienne version (peut-être dans un autre classeur ouvert)
Ajouter un commentaire
Réponse
+0
moins plus
Toute mes excuses, je croyais que c'était un nouveau prog a saisir, comme quoi je ne suis pas bon!
Le calcul n'est pas immédiat mais cela marche en appuyant sur F9 et ça me va.
Je vous remercie à tout deux pour vos conseil et votre patience.

Je vous souhaite un excellent dimanche et continuer comme ça, c'est super.

@+

Lysandre
Ajouter un commentaire
Réponse
+0
moins plus
Ok, n'oublie pas de mettre en résolu alors...
Ajouter un commentaire
Ce document intitulé « Macro couleur Excel » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?