OVH Cloud OVH Cloud

OLEFormat.Object.Interior.ColorIndex

20 réponses
Avatar
Jean-Paul V
Bonjour à tous

Dans Feuil1 j’ai les Range lig et col ( nous avons également la remarquable
palette de GeeDee 1596 couleurs )
Dans la Feuil1 j’ai également un groupe de formes nommé groupe
Dans la Feuil2 nommée MosaiqueJPV j’ai un groupe de formes nommé Groupe clair

Pourquoi ma macro se plante sur Groupe clair alors qu’elle fonctionne sur
groupe :

Sub Colorerclair()
Dim ligne As Long, colonne As Long
ligne = [lig]: colonne = [col]

Worksheets("Feuil1").Shapes("groupe").OLEFormat.Object.Interior.ColorIndex =
ligne 'fontionne !
Worksheets("Feuil1").Shapes("groupe").OLEFormat.Object.Interior.Pattern
= xlPatternGray50 'fontionne !

Worksheets("Feuil1").Shapes("groupe").OLEFormat.Object.Interior.PatternColorIndex = colonne 'fontionne !

' Worksheets("Feuil2").Shapes("Groupe
clair").OLEFormat.Object.Interior.ColorIndex = ligne 'ne marche pas
' Worksheets("Feuil2").Shapes("Groupe
clair").OLEFormat.Object.Interior.Pattern = xlPatternGray50 'ne marche pas
' Worksheets("Feuil2").Shapes("Groupe
clair").OLEFormat.Object.Interior.PatternColorIndex = colonne 'ne marche pas

Worksheets("MosaiqueJPV").Shapes("Groupe
clair").OLEFormat.Object.Interior.ColorIndex = ligne 'ne marche pas mieux
Worksheets("MosaiqueJPV").Shapes("Groupe
clair").OLEFormat.Object.Interior.Pattern = xlPatternGray50 'ne marche pas
Worksheets("MosaiqueJPV").Shapes("Groupe
clair").OLEFormat.Object.Interior.PatternColorIndex = colonne 'ne marche pas
End Sub

Avec Feuil2…. j’ai le message d’erreur ‘’L’indice n’appartient pas à la
sélection’’
Avec MosaiqueJPV…’’Impossible de définir la propriété ColorIndex de la
classe Interior

http://cjoint.com/?ijipSvjUZY


@+ j’espère

--
Jean-Paul V

10 réponses

1 2
Avatar
Modeste
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :

N°SchemeColor = N°ColorIndex + 7



Ce que tu énonces, Est-ce une vérité de la palice ?
ou d'un gars qui a pris quelques verres de vin en soupant ?
;-))



Non en tant que ch'timi, mi j'carbure al'bière !!!
Même que y a deux jours j'ai sifflé une "Maudite"
mais je ne trouve nin dans min coin de l'blanche de Chambly
:-(
Le rouge le laisse volontier à notre banni de beaujoleux
;o)))

Santé à tout deux ;o)))

mais tu aura quand meme remarqué que :
.Shapes.Range("Groupe clair").Fill.ForeColor.SchemeColor = 10
et
ActiveCell.Interior.ColorIndex=3
sont bien rouge toutes les deux !!!
et ce 7 d'écart n'est signalé nulle part
et que les SchemeColor de 1 à 7 semblent ignorés

et que par ailleurs
.Shapes.Range("Groupe clair").Fill.ForeColor.RGB = RGB(xxx,yyy,zzz)
n'affiche pas necessairement la couleur RGB attendue
mais la couleur associée au ColorIndex approchant en luminosité selon la codification HSL

--
--
@+
;o)))
Avatar
michdenis
| mais tu aura quand meme remarqué que :
| .Shapes.Range("Groupe clair").Fill.ForeColor.SchemeColor = 10

Oui en faisant un test.... mais c'est la première fois que j'entends
celle-là :
N°SchemeColor = N°ColorIndex + 7

Évidemment, je n'ai pas d'explications !
Merci de l'avoir signalé.

Avec SchemeColor on peut utiliser un index entre 0 et 80 inclusivement.
Ceci ne signifie pas qu'elle affiche autant de couleurs différentes !

| ForeColor.RGB = RGB(xxx,yyy,zzz)
| n'affiche pas necessairement la couleur RGB attendue

Cela est de la vieille histoire ! Non ?



"Modeste" a écrit dans le message de news:
OEv$dfm%
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :

N°SchemeColor = N°ColorIndex + 7



Ce que tu énonces, Est-ce une vérité de la palice ?
ou d'un gars qui a pris quelques verres de vin en soupant ?
;-))



Non en tant que ch'timi, mi j'carbure al'bière !!!
Même que y a deux jours j'ai sifflé une "Maudite"
mais je ne trouve nin dans min coin de l'blanche de Chambly
:-(
Le rouge le laisse volontier à notre banni de beaujoleux
;o)))

Santé à tout deux ;o)))

mais tu aura quand meme remarqué que :
.Shapes.Range("Groupe clair").Fill.ForeColor.SchemeColor = 10
et
ActiveCell.Interior.ColorIndex=3
sont bien rouge toutes les deux !!!
et ce 7 d'écart n'est signalé nulle part
et que les SchemeColor de 1 à 7 semblent ignorés

et que par ailleurs
.Shapes.Range("Groupe clair").Fill.ForeColor.RGB = RGB(xxx,yyy,zzz)
n'affiche pas necessairement la couleur RGB attendue
mais la couleur associée au ColorIndex approchant en luminosité selon la
codification HSL

--
--
@+
;o)))
Avatar
Jean-Paul V
Bonjour à tous

En faisant une synthèse de michdenis et Modeste j’ai essayé :
Sub Colorerclair()
Dim ligne As Long, colonne As Long
ligne = [lig]: colonne = [col]
With Range("Cclair")
.Interior.ColorIndex = ligne
.Interior.Pattern = xlPatternGray50
.Interior.PatternColorIndex = colonne
End With
'Solution MichDenis modifiée Modeste
With Worksheets("MosaiqueJPV")
.Shapes.Range("Groupeclair").Fill.ForeColor.SchemeColor = ligne 'ne
donne pas la même couleur que Range("Cclair)
.Shapes.Range("Groupeclair").Fill.BackColor.SchemeColor = colonne 'ne
donne pas la même couleur que Range("Cclair)
' .Shapes.Range("Groupeclair").Fill.TwoColorGradient
msoGradientHorizontal, 4 'dégradé ne figurant pas ds palette 1596 couleurs de
GD
.Shapes.Range("Groupeclair").Fill.Patterned msoPattern50Percent
'Suggestion GeeDee Modeste
End With

Ça ne se plante pas mais la couleur de Range("Cclair") et de
Shapes.Range("Groupeclair") n’est pas la même.

J’ai fais 2 autres essais et j’ai eu respectivement ces 2 messages d’erreur

'Autre essai JPV
With Worksheets("MosaiqueJPV")
.Shapes.Range("Groupeclair").Fill.ForeColor.ColorIndex = ligne 'Erreur
Propriété ou méthode non géré par cet objet !
.Shapes.Range("Groupeclair").Fill.ForeColor.Pattern = xlPatternGray50
.Shapes.Range("Groupeclair").Fill.ForeColor.PatternColorIndex = colonne
End With
'Autre essai JPV
With Worksheets("MosaiqueJPV")
.Shapes.Range("Groupeclair").Fill.ForeColor.SchemeColor.ColorIndex =
ligne 'Erreur Objet requis !
.Shapes.Range("Groupeclair").Fill.ForeColor.SchemeColor.Pattern =
xlPatternGray50

.Shapes.Range("Groupeclair").Fill.ForeColor.SchemeColor.PatternColorIndex =
colonne
End With

J'ai l'impression qu'il faut que j'abandonne l'utilisation de la palette
1596 couleurs dommage...
--
Jean-Paul V


"Modeste" wrote:

Bonsour® michdenis avec ferveur ;o))) vous nous disiez :

> Utilise ceci au lieu de tes 3 lignes de code :
> With Worksheets("MosaiqueJPV")
> .Shapes.Range("Groupe clair").Fill.ForeColor.SchemeColor = Ligne
> .Shapes.Range("Groupe clair").Fill.BackColor.SchemeColor = Colonne

la troisieme instruction pourrait etre :

> .Shapes.Range("Groupe clair").Fill.Patterned msoPattern50Percent

> End With

c'est en effet la solution la plus rationnelle pour colorer des objets autres que des cellules.
et pour avoir une similitude aux effets couleurs des cellules.

Toutefois la numérotation ColorIndex / SchemeColor n'est pas explicitement identique
N°SchemeColor = N°ColorIndex + 7
mais explique également pourquoi il n'y a pas plus de (56) SchemeColor que de ColorIndex

et que en consequence il est inutile dans ce classeur (Mosaique de JeanPaul V)
d'utiliser le remplissage par les 1540-1596 couleurs virtuelles simultanées.
L'utilisation des palettes modifiées devrait suffir
et évitera d'atteindre trop rapidement le blocage par nombre de formats trop élevés


--
@+
;o)))




Avatar
Modeste
Bonsour® Jean-Paul V avec ferveur ;o)))

comme dit précédement N°SchemeColor = N°ColorIndex + 7

Sub Colorerclair()
Dim ligne As Long, colonne As Long
ligne = [lig]: colonne = [col]
With Range("Cclair")
.Interior.ColorIndex = ligne
.Interior.Pattern = xlPatternGray50
.Interior.PatternColorIndex = colonne
End With
With Worksheets("MosaiqueJPV")
.Shapes.Range("Groupeclair").Fill.ForeColor.SchemeColor = ligne + 7
.Shapes.Range("Groupeclair").Fill.BackColor.SchemeColor = colonne + 7
.Shapes.Range("Groupeclair").Fill.Patterned msoPattern50Percent
End With

--
--
@+
;o)))
Avatar
Modeste
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :

ForeColor.RGB = RGB(xxx,yyy,zzz)
n'affiche pas necessairement la couleur RGB attendue


mais la couleur associée au ColorIndex approchant en luminosité selon
la codification HSL



;o)))
en effet Denis, nous avions déja échangé à ce sujet,
mais des complications de stabilité ne m'ont pas permis de diffuser mes travaux

la traduction si elle fonctionne effectivement de façon injective
RGB vers HSL
ou
HSL vers RGB

la traduction RGB1 >>> HSL >>> RGB2
ne l'est plus de façon bijective
RGB1 est different de RGB2
:-(

--
--
@+
;o)))
Avatar
Jean-Paul V
Ma synthèse était incomplète, avec cette réponse ça m'a l'air d'être bon,
merci et bravo pour votre aide à tous les deux !

Patience et longueur de temps font plus que force ni que rage...
--
Jean-Paul V


"Jean-Paul V" wrote:

Bonjour à tous

En faisant une synthèse de michdenis et Modeste j’ai essayé :
Sub Colorerclair()
Dim ligne As Long, colonne As Long
ligne = [lig]: colonne = [col]
With Range("Cclair")
.Interior.ColorIndex = ligne
.Interior.Pattern = xlPatternGray50
.Interior.PatternColorIndex = colonne
End With
'Solution MichDenis modifiée Modeste
With Worksheets("MosaiqueJPV")
.Shapes.Range("Groupeclair").Fill.ForeColor.SchemeColor = ligne 'ne
donne pas la même couleur que Range("Cclair)
.Shapes.Range("Groupeclair").Fill.BackColor.SchemeColor = colonne 'ne
donne pas la même couleur que Range("Cclair)
' .Shapes.Range("Groupeclair").Fill.TwoColorGradient
msoGradientHorizontal, 4 'dégradé ne figurant pas ds palette 1596 couleurs de
GD
.Shapes.Range("Groupeclair").Fill.Patterned msoPattern50Percent
'Suggestion GeeDee Modeste
End With

Ça ne se plante pas mais la couleur de Range("Cclair") et de
Shapes.Range("Groupeclair") n’est pas la même.

J’ai fais 2 autres essais et j’ai eu respectivement ces 2 messages d’erreur

'Autre essai JPV
With Worksheets("MosaiqueJPV")
.Shapes.Range("Groupeclair").Fill.ForeColor.ColorIndex = ligne 'Erreur
Propriété ou méthode non géré par cet objet !
.Shapes.Range("Groupeclair").Fill.ForeColor.Pattern = xlPatternGray50
.Shapes.Range("Groupeclair").Fill.ForeColor.PatternColorIndex = colonne
End With
'Autre essai JPV
With Worksheets("MosaiqueJPV")
.Shapes.Range("Groupeclair").Fill.ForeColor.SchemeColor.ColorIndex =
ligne 'Erreur Objet requis !
.Shapes.Range("Groupeclair").Fill.ForeColor.SchemeColor.Pattern =
xlPatternGray50

.Shapes.Range("Groupeclair").Fill.ForeColor.SchemeColor.PatternColorIndex =
colonne
End With

J'ai l'impression qu'il faut que j'abandonne l'utilisation de la palette
1596 couleurs dommage...
--
Jean-Paul V


"Modeste" wrote:

> Bonsour® michdenis avec ferveur ;o))) vous nous disiez :
>
> > Utilise ceci au lieu de tes 3 lignes de code :
> > With Worksheets("MosaiqueJPV")
> > .Shapes.Range("Groupe clair").Fill.ForeColor.SchemeColor = Ligne
> > .Shapes.Range("Groupe clair").Fill.BackColor.SchemeColor = Colonne
>
> la troisieme instruction pourrait etre :
>
> > .Shapes.Range("Groupe clair").Fill.Patterned msoPattern50Percent
>
> > End With
>
> c'est en effet la solution la plus rationnelle pour colorer des objets autres que des cellules.
> et pour avoir une similitude aux effets couleurs des cellules.
>
> Toutefois la numérotation ColorIndex / SchemeColor n'est pas explicitement identique
> N°SchemeColor = N°ColorIndex + 7
> mais explique également pourquoi il n'y a pas plus de (56) SchemeColor que de ColorIndex
>
> et que en consequence il est inutile dans ce classeur (Mosaique de JeanPaul V)
> d'utiliser le remplissage par les 1540-1596 couleurs virtuelles simultanées.
> L'utilisation des palettes modifiées devrait suffir
> et évitera d'atteindre trop rapidement le blocage par nombre de formats trop élevés
>
>
> --
> @+
> ;o)))
>
>


Avatar
Modeste
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :
Avec SchemeColor on peut utiliser un index entre 0 et 80
inclusivement. Ceci ne signifie pas qu'elle affiche autant de
couleurs différentes !



comme signalé
ShapeRange.Fill.Solid
on n'affiche au plus que les 56 couleurs de la palette courante
(standard ou modifiée)
nonobstant les Pattern ou gradients

quid des RGB/SchemeColor 0 à 7 ?????????
et 64 à 80 ????????

Sub Macro1()
Sheets.Add
[A1] = "ColorIndex"
[B1] = "Couleur cellule"
[C1] = "RGB cellule"
[D1] = "SchemeColor"
[E1] = "RGB Shape"
On Error Resume Next
For i = 1 To 80
Cells(i + 1, 1) = i
Cells(i + 1, 4) = i
ActiveSheet.Shapes.AddShape(msoShapeRectangle, Cells(i + 1, 4).Left, Cells(i + 1, 4).Top, 12, 12). _
Select
Selection.ShapeRange.Fill.ForeColor.SchemeColor = i
Cells(i + 1, 5) = Selection.Interior.Color
Cells(i + 1, 2).Interior.ColorIndex = i
Cells(i + 1, 3) = Cells(i + 1, 2).Interior.Color
Next
End Sub


--
@+
;o)))
Avatar
michdenis
À partir de ta procédure... quelques observations :

Si tu fais un filtre élaboré sans doublons sur les colonnes
Rgb Cellule et Rgb Shapes à tour de rôle, tu constateras
que chacune des colonnes n'affiche que 46 valeurs
différentes.(Pourquoi 46 au lieu de 56 ?)

En fait, dans la colonne C, il n'y a que 46 entrées correspondantes
en Colonne E. L'inverse est aussi vrai, 46 entrées de la colonne E
ont une correspondance en colonne C

Le pourquoi ? Je me sens pas l'âme d'un colombo aujourd'hui !
Le soleil est au rendez-vous.


Salutations.




"Modeste" a écrit dans le message de news:
OrHqX6s%
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :
Avec SchemeColor on peut utiliser un index entre 0 et 80
inclusivement. Ceci ne signifie pas qu'elle affiche autant de
couleurs différentes !



comme signalé
ShapeRange.Fill.Solid
on n'affiche au plus que les 56 couleurs de la palette courante
(standard ou modifiée)
nonobstant les Pattern ou gradients

quid des RGB/SchemeColor 0 à 7 ?????????
et 64 à 80 ????????

Sub Macro1()
Sheets.Add
[A1] = "ColorIndex"
[B1] = "Couleur cellule"
[C1] = "RGB cellule"
[D1] = "SchemeColor"
[E1] = "RGB Shape"
On Error Resume Next
For i = 1 To 80
Cells(i + 1, 1) = i
Cells(i + 1, 4) = i
ActiveSheet.Shapes.AddShape(msoShapeRectangle, Cells(i + 1, 4).Left, Cells(i
+ 1, 4).Top, 12, 12). _
Select
Selection.ShapeRange.Fill.ForeColor.SchemeColor = i
Cells(i + 1, 5) = Selection.Interior.Color
Cells(i + 1, 2).Interior.ColorIndex = i
Cells(i + 1, 3) = Cells(i + 1, 2).Interior.Color
Next
End Sub


--
@+
;o)))
Avatar
Modeste
Bonsour® michdenis avec ferveur ;o))) vous nous disiez :

À partir de ta procédure... quelques observations :

Si tu fais un filtre élaboré sans doublons sur les colonnes
Rgb Cellule et Rgb Shapes à tour de rôle, tu constateras
que chacune des colonnes n'affiche que 46 valeurs
différentes.(Pourquoi 46 au lieu de 56 ?)



;o)))
cela signifie simplement que dans la palette standard par défaut il y a des redondances...
ce qui n'est pas le cas des palettes personnalisées générées dans le classeur Mosaiques ou dans Gdpallettes
;o)))

--
--
@+
;o)))
Avatar
michdenis
| cela signifie simplement que dans la palette standard par défaut il y a
des redondances...
| ce qui n'est pas le cas des palettes personnalisées générées dans le
classeur Mosaiques ou dans Gdpallettes

Ce n'est pas avec les yeux que je possède que je peux
faire une telle différence des couleurs !

Le demandeur en a eu plus qu'il en demandait réellement !

;-)
1 2