Macro couleur Excel

Résolu/Fermé
Lysandre Messages postés 317 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 2 décembre 2024 - 5 déc. 2009 à 11:33
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 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
A voir également:

18 réponses

Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 108
5 déc. 2009 à 12:42
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

https://www.cjoint.com/
0
Lysandre Messages postés 317 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 2 décembre 2024 51
5 déc. 2009 à 13:06
Merci Mike-31 pour ta réponse

Voila un fichier exemple : https://www.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
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
5 déc. 2009 à 13:57
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
0
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 108
5 déc. 2009 à 14:18
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
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
5 déc. 2009 à 16:08
Ah !!! je ne t'avais pas parlé de mon don de devin ? Un oubli sans doute ;-)
0
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 108
5 déc. 2009 à 14:43
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

https://www.cjoint.com/?mfoOMUQHjM
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lysandre Messages postés 317 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 2 décembre 2024 51
5 déc. 2009 à 16:11
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
0
Lysandre Messages postés 317 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 2 décembre 2024 51
5 déc. 2009 à 16:39
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
0
Lysandre Messages postés 317 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 2 décembre 2024 51
5 déc. 2009 à 16:54
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
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
5 déc. 2009 à 17:00
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
0
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 108
5 déc. 2009 à 17:16
Re,

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

https://www.cjoint.com/?mfrpiVmW5J
0
Lysandre Messages postés 317 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 2 décembre 2024 51
5 déc. 2009 à 19:17
Comment faire une application volatile ?

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

Lysandre
0
Mike-31 Messages postés 18351 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 12 décembre 2024 5 108
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

https://www.cjoint.com/?mfwaupwfgl
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
5 déc. 2009 à 21:34
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
0
Lysandre Messages postés 317 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 2 décembre 2024 51
6 déc. 2009 à 01:49
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
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
6 déc. 2009 à 10:17
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
0
Lysandre Messages postés 317 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 2 décembre 2024 51
6 déc. 2009 à 10:43
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
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
6 déc. 2009 à 10:47
C'est parce que function sommecouleur(...) est présent 2 fois.
Supprime l'ancienne version (peut-être dans un autre classeur ouvert)
0
Lysandre Messages postés 317 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 2 décembre 2024 51
6 déc. 2009 à 10:58
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
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
6 déc. 2009 à 11:12
Ok, n'oublie pas de mettre en résolu alors...
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 247
5 déc. 2009 à 16:25
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
-1