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
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
A voir également:
- Excel macro couleur cellule condition
- Excel cellule couleur si condition texte - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Aller à la ligne dans une cellule excel - Guide
- Liste déroulante excel - Guide
- Verrouiller cellule excel - Guide
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
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/
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/
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
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
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
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
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
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
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
5 déc. 2009 à 16:08
Ah !!! je ne t'avais pas parlé de mon don de devin ? Un oubli sans doute ;-)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Regardes tout en VBA avec un code simple qui pilote le comptage en G9, 13,15 et 19
https://www.cjoint.com/?mfrpiVmW5J
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
5 déc. 2009 à 19:17
Comment faire une application volatile ?
Mike, j'ai copié tes données mais sans résultats
Lysandre
Mike, j'ai copié tes données mais sans résultats
Lysandre
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
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
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
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
5 déc. 2009 à 21:34
Ajoute Application.Volatile au début du code.
donc :
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
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
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
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
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
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
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
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
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
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
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
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)
Supprime l'ancienne version (peut-être dans un autre classeur ouvert)
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
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
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
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
6 déc. 2009 à 11:12
Ok, n'oublie pas de mettre en résolu alors...
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
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 :
eric
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
5 déc. 2009 à 13:06
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