XL 2010 Couleur des barres d'un graphique = couleur d'une cellule

mécano41

XLDnaute Accro
Bonjour,

J'avais fait un premier fichier pour répondre à une demande. Il fonctionne correctement mais le demandeur préférerait ne pas avoir à définir les couleurs en RGB sur la feuille (tableau des critères). J'ai essayé mais si je sais lire la couleur d'une cellule je n'arrive pas à la reporter dans le format du point du graphique sous forme d'un Long. (et le .ColorIndex ne fonctionne pas pour toutes les couleurs)

Soit il faut lire la couleur de cellule en RGB (pas trouvé comment) soit il faut reporter la couleur en format Long (pas trouvé non plus).

Quelqu'un a-t-il une solution?.

Au cas où quelqu'un aurait une solution globalement différente (peut-être en EXCEL 2016?), il peut aller sur le fil d'origine :

Merci d'avance.

Cordialement
 

Pièces jointes

  • Graphique - couleurs automatiques 1 .xlsm
    25.2 KB · Affichages: 10
  • Graphique - couleurs automatiques 2 .xlsm
    25.3 KB · Affichages: 8
Dernière édition:

Dranreb

XLDnaute Barbatruc
Que voulez vous dire ? Couleur ne vaut pas le code de couleur de la couleur de fond de la cellule ou vous ne savez pas l'affecter à la propriété de la série qui accepte sinon une valeur retournée par la fonction RGB ?
 

mécano41

XLDnaute Accro
Il souhaite que la couleur du point (ou de la barre) soit la même que celle qu'il aura choisie pour son tableau des critères. On ne sait pas, a priori, ce qu'il choisira or certaines couleurs avec un .Interior.ColorIndex donnent -4142.

Dans ma première version, j'avais choisi de mettre les valeurs des composantes RGB et je venait les chercher par VBA pour les appliquer au graphique.

En revanche, pour aller chercher la couleur d'une cellule et mettre ses composantes RGB dans un tableau pour les reporter dans le formatage du graphique, je ne sais pas faire. Et l'inverse non plus : reporter la valeur de la couleur en Long, dans le formatage du graphique (c'est la tentative de mon fichier N°2 +correction dans mon message précédent, mais qui conduit à une erreur...)

En fait, cela doit bien se faire mais je ne trouve pas comment...c'est juste parce que je ne suis pas bon!

Cordialement
 

Dranreb

XLDnaute Barbatruc
Déjà déclarez partout le code de couleur en Long, pas en Variant.
Dans Sub CouleurPoint(ByVal ValeurPoint As Double, ByRef Couleur As Long) :
Couleur = Worksheets(1).Range("CritèresCouleurs").Cells(Coul - 1, 1).Interior.Color
Dans la Sub appelante derrière Call CouleurPoint(ValPt, Coul) :
.Format.Fill.ForeColor.RGB = Coul
 

Dranreb

XLDnaute Barbatruc
Pour information, on pouvait écrire tout ça comme ça :
VB:
Sub Worksheet_Change(ByVal Cible As Range)
   Dim RngDon As Range, TDon(), RngCoul As Range, S As Series, L As Long, ICoul As Long
   Set RngDon = Me.Range("Données"): If Intersect(Cible, RngDon) Is Nothing Then Exit Sub
   TDon = RngDon.Value
   Set RngCoul = Me.Range("CritèresCouleurs").Columns(1)
   Set S = Me.ChartObjects(1).Chart.SeriesCollection(1)
   For L = 1 To UBound(TDon, 1)
      On Error Resume Next: ICoul = WorksheetFunction.Match(TDon(L, 1), RngCoul, -1): If Err Then ICoul = 1
      On Error GoTo 0: S.Points(L).Format.Fill.ForeColor.RGB = RngCoul.Rows(ICoul).Interior.Color
      Next L
   End Sub
 

Max22

XLDnaute Nouveau
Bonjour à tous !

Vous m'enlevez une épine du pied .
Je tiens à vous remercier tous !! C'était moi le "demandeur" ;)

1) A la solution de la couleur de graph automatique j'ai eu un problème hier, car j'ai déplace l'onglet sans faire attention, et il n'avait plus la meme position dans la liste worksheet(1) est devenu workshee(7) et j'ai mis 2 heures avant de comprendre que sa position jouait.
Est il possible de lui donner un nom fixe (solution_A) , ou le nom du worksheet du graph (solution_B)?

Toujours dans la série des couleurs automatiques , sauriez vous definir une fonction
2) Fct_mettre_la_meme_couleur_conditionnelle_d'une_liste_choix( xx);

3 ) Fct_mettre_la_meme_couleur_conditionnelle_dans_les_cellules_de_droite( xx);

j'ai mis des exemples pour illustrer comment je souhaite les utiliser concrètement :)
Bonne journée et merci
 

Pièces jointes

  • Couleurs automatiques - Graphique et Liste - V4.0.xlsm
    36.9 KB · Affichages: 10

Dranreb

XLDnaute Barbatruc
Bonjour.
Moi j'utilise toujours directement comme expression Worksheet l'objet Worksheet de la rubrique Microsoft Excel Objets (Feuil1 ici), comme ça même si on renomme ou déplace la feuille qu'il représente ça marche toujours.
On pourrait écrire un code qui met en place une mise en forme conditionnelle appliquant les couleurs fixées prises d'une plage de cellules, mais pas des couleurs variables prises de celle ci.
 

mécano41

XLDnaute Accro
Bonjour,

Le problème, c'est que lorsque tu demandes une méthode pour faire quelque chose et que tu ne dis pas ce que tu veux en faire ensuite, l'intervenant te répond juste sur le problème ponctuel... Si tu veux recopier la méthode, il faut savoir qu'en VBA cela ne se passe pas comme dans une feuille ; si l'on ne le fait pas bien, ça plante! Pour ton cas :

- tu vas dans la colonne de gauche "Projets" du VBE
- tu cliques sur Feuil1...puis Affichage/Fenêtre propriétés. Une fenêtre s'ouvre et en haut il y a le nom Feuil1
- tu remplaces par MaxF1 par ex. (ça s'appelle le CodeName) et tu fermes la fenêtre
- dans le code, il y a deux fois "Worksheets(1)..."
- tu remplaces le 1 par MaxF1.Name

Lorsque tu modifies le nom d'onglet, ce CodeName que tu viens de mettre ne change pas (tu peux d'ailleurs laisser Feuil1 (tu vois d'ailleurs qu'entre parenthèse, c'est le nom de l'onglet)

et c'est tout...même si tu déplaces les tableaux en rajoutant des lignes ou des colonnes au dessus ou du côté gauche, cela continue de fonctionner.

Si tu recréées un graphique, il faut évidemment le renommer comme je t'avais dit.
Si tu modifies des zones nommées, il faut vérifier si la plage nommée est toujours bonne.

@Dranreb : je n'ai pas réussi même sur feuille ... critères peut-être trop compliqués. il y a toujours quelque chose qui ne convient pas... Ou bien il faudrait modifier le tableau des critères.

Cordialement
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16