Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Boite de dialogue des couleurs

230 views
Skip to first unread message

Flori@n

unread,
Sep 12, 2001, 9:31:27 AM9/12/01
to
Bonjour les Mpfe-iens,

je souhaite ouvrir via un module la boite dialogue des couleurs mais je
crois mal m'y prendre. J'utilise ceci :

ActiveSheet.Shapes("rect1").Select
macoul = Application.Dialogs(xlDialogEditColor).Show

Il me renvoie l'erreur :
"Erreur d'execution '1004':
Impossible de lire la propriété Show de la classe Dialog."

Qu'est ce qui ne va pas ?
Merci d'avence pour vos réponses.


(J'utilise Windows 2000 + Excel 97)


Serge Garneau

unread,
Sep 12, 2001, 11:07:10 AM9/12/01
to
Salut Florian,
Est-ce que :
Sub Montre()
Application.Dialogs(xlDialogColorPalette).Show
End Sub
conviendrait ?

Serge

Flori@n

unread,
Sep 12, 2001, 11:25:29 AM9/12/01
to
Merci Serge, mais non, ça ne me convient pas.
Je souhaite obtenir la boîte de dialogue des couleurs où l'on peut changer
une couleur en agissant sur ses composantes Rouge, Vert et Bleu. (clique sur
un objet, puis "format", "option de forme", "couleur", "couleur
supplémentaire",...)
Merci quand même pour ta réponse.
Je désespère de trouver une solution ...

"Serge Garneau" <gar...@globetrotter.qc.ca> a écrit dans le message de
news: 01c13b9c$d4ee2b80$886ba98e@default...

Iznogood

unread,
Sep 12, 2001, 11:46:08 AM9/12/01
to
Manifestement certains arguments ne sont pas facultatifs !
Essaye :

Sub Macro1()
a = Application.Dialogs(xlDialogEditColor).Show(1, 0, 0, 0)
End Sub

Flori@n a écrit dans le message
<3b9f6326$0$6690$4362...@news-test.free.fr>...

Flori@n

unread,
Sep 12, 2001, 3:03:30 PM9/12/01
to
nondidiou! ça marche !
Merci pour l'astuce !
Comment sais tu tous ça ?
Il y a un bouquin particulier qui en dis plus long que l'aide "officielle"
de MS ?
Merci encore et bonne nuit.

"Iznogood" <Repons...@SVP.fr> a écrit dans le message de news:
9nnvss$2u1e$1...@news4.isdnet.net...

Benoît Marchand

unread,
Sep 12, 2001, 6:19:21 PM9/12/01
to
Salut Iznogood,

STéphane à déjà utiliser cela dans du code, mais je n'arrive pas à récupérer la valeur pour l'utiliser (XL97)

Tu as une idée ?

A+
Benead

Iznogood a écrit :

Benoît Marchand

unread,
Sep 12, 2001, 6:27:18 PM9/12/01
to

Salut Iznogood,

STéphane à déjà utilisé cela dans du code, mais je n'arrive pas à récupérer la valeur pour l'utiliser (XL97)

Tu as une idée ?

A+
Benead

Iznogood a écrit :

> Manifestement certains arguments ne sont pas facultatifs !

pascal engelmajer

unread,
Sep 13, 2001, 3:55:14 AM9/13/01
to
salut,
oui seul arg1 est obligatoire
par exemple
Dim x As Dialog
Dim rouge, vert, bleu
Set x = Application.Dialogs(xlDialogEditColor)
couleur = 1
rouge = &HFF
vert = &HA3
bleu = &HFF
x.Show arg1:=couleur, arg2:=rouge, arg3:=vert, arg4:=bleu
ouvre la boite de dialogue avec la couleur 255, 163, 255

mais comment récupère-t-on les valeurs après modif ???
Pascal


Flori@n <flo.be...@laposte.net> a écrit dans le message :
3b9fb2c4$0$6697$4362...@news-test.free.fr...

Flori@n

unread,
Sep 13, 2001, 5:31:12 AM9/13/01
to
Effectivement, la syntaxe d'Iznogood permet d'afficher la boîte mais cette
boîte renvoie une valeur booléenne, et, le changement de couleur dans ladite
boîte ne modifie pas mon objet pour autant...
Elle sert à quoi cette boîte ?
Et comment changer la couleur de mon objet en utilisant les composantes RVB
?


"pascal engelmajer" <pascal.e...@ilyapa.net> a écrit dans le message
de news: OjN74fCPBHA.1540@tkmsftngp03...

Iznogood

unread,
Sep 13, 2001, 5:37:22 AM9/13/01
to
Je vais tâcher d'être compréhensible, sachant que ça devrait répondre aussi
à la question de pascal.
Application.Dialogs(xlDialogQQCHOSE) ne retourne que 2 valeurs :
vrai si on clique su ok
faux si on clique sur annuler.
On ne récupère pas d'autres paramètres, mais on déclenche l'action prévue
par la boite de dialogue.

Exemple avec xlDialogOpen :
Si on choisit un fichier et qu'oon clique sur OK,
=> on ouvre le fichier
=> on récupère Vrai
=> mais on ne récupère pas le nom du fichier !

Avec xlDialogEditColor, on peut "éditer" les couleurs.
Par exemple, la couleur n°1 qui est noire peut être remplacée par du bleu.
Ce qui permet ensuite d'avoir du bleue quand on utilise la couleur 1.

Benoît Marchand a écrit dans le message
<3B9FE146...@club-internet.fr>...

pascal engelmajer

unread,
Sep 13, 2001, 5:54:39 AM9/13/01
to
salut,
merci, c'est simple.
peut-on trouver ces indication sur l'aide MS ?
amicalement
Pascal
Iznogood <Repons...@SVP.fr> a écrit dans le message :
9npulf$d1b$1...@news2.isdnet.net...

Flori@n

unread,
Sep 13, 2001, 5:57:19 AM9/13/01
to
Salut,
je dois avoir loupé une étape car je ne parvient toujours pas à mettre ma
couleur, choisie via cette boîte, sur mon objet...
Pouvez vous m'éclairer ? (Je sais, il me manque quelques neurones...)

je fait ça :
sub coucoul()
Dim x As Dialog


Set x = Application.Dialogs(xlDialogEditColor)
couleur = 1

ActiveSheet.Shapes("rect1").Select
x.Show arg1:=couleur
Selection.ShapeRange.Fill.ForeColor.SchemeColor = 1
End Sub
... mais ça change rien.


"pascal engelmajer" <pascal.e...@ilyapa.net> a écrit dans le message
de news: emm6niDPBHA.1788@tkmsftngp03...

Iznogood

unread,
Sep 13, 2001, 6:30:56 AM9/13/01
to
Pas essayé, mais je dirais
1/ edite ta couleur (la n°1) par exemple avec dialogs
2/ change la propiété colorindex de ta forme
"Flori@n" <florian....@vnumail.com> a écrit dans le message news:
3q%n7.5940$594.6...@nnrp1.proxad.net...

pascal engelmajer

unread,
Sep 13, 2001, 6:41:11 AM9/13/01
to
salut,
.........xlDialogColorEdit).show(18,rouge,vert,bleu)
Activecell.Font.ColorIndex=18
par exemple
Pascal
pascal engelmajer <pascal.e...@ilyapa.net> a écrit dans le message : emm6niDPBHA.1788@tkmsftngp03...

Iznogood

unread,
Sep 13, 2001, 6:32:29 AM9/13/01
to
Mes seules connaissances viennent dans l'ordre
d'essais divers,
de la lecture de l'aide en ligne
de la lecture de ce forum
de la lecture des sites ouvent cités ici

désolé!

"pascal engelmajer" <pascal.e...@ilyapa.net> a écrit dans le message
news: emm6niDPBHA.1788@tkmsftngp03...

Flori@n

unread,
Sep 13, 2001, 8:02:09 AM9/13/01
to
resalut les poteaux !
oui, ça marche avec du texte dans une cellule.
Mais pas avec mon rectangle (shape) qui ne veut pas entendre parler de la
propriété "Colorindex"...
une idée ?

ActiveSheet.Shapes("rect1").Fill.ForeColor.SchemeColor = ???

> "pascal engelmajer" pascal.e...@ilyapa.net> a écrit dans le message

de news: OcOYp8DPBHA.2112@tkmsftngp04...

Denis Pasquier

unread,
Sep 13, 2001, 8:50:42 AM9/13/01
to
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(153, 255, 102)
denis p

"Flori@n" a écrit :

Iznogood

unread,
Sep 13, 2001, 9:03:21 AM9/13/01
to
Désolé, avec RGB, tu n'utilises pas la couleur modifié par ta boite de
dialogue, mais on y est presque :

Selection.ShapeRange.Fill.ForeColor.SchemeColor = 2

(ici, j'utilise la couleur n°2 de la palette)

Denis Pasquier a écrit dans le message <3BA0ABA2...@rac.admin.ch>...

Flori@n

unread,
Sep 13, 2001, 9:24:30 AM9/13/01
to
presque !
je n'arrive pas à changer la couleur n°2 de la palette ...
ni aucune autre d'ailleur... ??
j'enrage!!

"Iznogood" <Repons...@SVP.fr> a écrit dans le message de news:
9nqanl$26ha$1...@news6.isdnet.net...

pascal engelmajer

unread,
Sep 13, 2001, 10:01:26 AM9/13/01
to
salut,
... xlDialogColorEdit).show( 2.... etc
Pascal
 
 
Flori@n <florian....@vnumail.com> a écrit dans le message : 9nqbu5$2759$1...@news6.isdnet.net...

Flori@n

unread,
Sep 13, 2001, 10:12:51 AM9/13/01
to
non ça marche pas chez moi...

Sub CmdColor_Click()


Dim x As Dialog
Set x = Application.Dialogs(xlDialogEditColor)

x.Show 2
ActiveSheet.Shapes("rect1").Fill.ForeColor.SchemeColor = 2
End Sub

???
je vais sauter par la fenêtre...

"pascal engelmajer" <pascal.e...@ilyapa.net> a écrit dans le message
de news: #3GJtsFPBHA.1496@tkmsftngp03...

Iznogood

unread,
Sep 13, 2001, 10:40:16 AM9/13/01
to
Je crois avoir trouvé :

ActiveSheet.Shapes("rect1").Select
Application.Dialogs(84).Show
(malheureusement, je ne sais pas à quelle constante xlDialog??? correspond
84)


Flori@n a écrit dans le message <9nqeou$lbl$1...@news2.isdnet.net>...

Flori@n

unread,
Sep 13, 2001, 11:06:36 AM9/13/01
to
Merci beaucoup Iznogood, mais je souhaite changer le couleur avec les
composantes RVB pour avoir plus que 32 couleurs à disposition...
Le fait d'ouvrir la boîte de dialogue (ça, ça marche), ne me fait pas
changer la couleur de mon objet (un bête shape)...

"Iznogood" <Repons...@SVP.fr> a écrit dans le message de news:

9nqgdc$29gg$1...@news6.isdnet.net...

Iznogood

unread,
Sep 13, 2001, 11:32:41 AM9/13/01
to
84=xldialogpatterns

Je ne vois plus que 2 solutions :

1/Editer la palette puis afficher la boite de dialogue chois du remplissage
:
Application.Dialogs(xlDialogColorPalette).Show
Feuil1.Shapes(1).Select
Application.Dialogs(xlDialogPatterns).Show

2/Faire appel à une fonction que je ne connais pas qui permettrais de
choisir une couleur et de renvoyer les valeurs RVB.
Je pense à une API quelconque, mais là je suis sec.
repose ta quesion sous une autre forme sur ce forum.


Flori@n a écrit dans le message
<3ba0caf3$0$6700$4362...@news-test.free.fr>...

pascal engelmajer

unread,
Sep 13, 2001, 11:50:49 AM9/13/01
to
salut,
cépabo mais ça marche

Sub CmdColor_Click()
Dim x As Dialog
Dim y As Shape
Set y = ActiveSheet.Shapes("rectangle 3")

Set x = Application.Dialogs(xlDialogEditColor)
x.Show 2
Range("A1").Font.ColorIndex = 2
y.Fill.ForeColor.RGB = Range("A1").Font.Color
End Sub
pourquoi ??????????????????

Flori@n <florian....@vnumail.com> a écrit dans le message :
9nqeou$lbl$1...@news2.isdnet.net...

Flori@n

unread,
Sep 13, 2001, 11:49:11 AM9/13/01
to
ah oui, une API... j'y penserais...
je suis en train d'utiliser une ruse de sioux pour parvenir à mes fin car
j'ai découvert qu 'il y a un décalage entre indexcolor et SchemeColor de 8
unités...

Pour ceux que le résultat intéresse, je vous enverrai mon classeur. ça
permet de créer une fausse barre (un ensemble de 100 petits rectangles de
couleur) dégradée en utilisant une formule polynomiale de degré 6... tout un
programme...
Utile lors de coloration d'objet en dégradé selon une classification
continue.
Merci à vous tous, je pense qu'on peut arrêter ce long fil ici.

"Iznogood" <Repons...@SVP.fr> a écrit dans le message de news:

9nqjfl$19qf$1...@news4.isdnet.net...

pascal engelmajer

unread,
Sep 13, 2001, 12:01:42 PM9/13/01
to
salut,
ça c'est bon!!!!!!!!!
j'en crois pas mes yeux ?????
Sub CmdColor2_Click()

Dim x As Dialog
Set x = Application.Dialogs(xlDialogEditColor)
x.Show 5
End Sub

Pascal
pascal engelmajer <pascal.e...@ilyapa.net> a écrit dans le message :
uWU#$pGPBHA.404@tkmsftngp03...

pascal engelmajer

unread,
Sep 13, 2001, 12:03:14 PM9/13/01
to
salut,
Sub CmdColor2_Click()

Dim x As Dialog
Set x = Application.Dialogs(xlDialogEditColor)
x.Show 5
End Sub
c'est trop simple pour des surdoués de VBA ....
Pascal
Flori@n <florian....@vnumail.com> a écrit dans le message :
9nqkde$1gq$1...@news5.isdnet.net...

pascal engelmajer

unread,
Sep 13, 2001, 12:24:54 PM9/13/01
to
salut,
ça marche plus !!!!????

Pascal
pascal engelmajer <pascal.e...@ilyapa.net> a écrit dans le message :
OLZGKwGPBHA.1736@tkmsftngp03...

STéphane

unread,
Sep 13, 2001, 1:18:27 PM9/13/01
to

bonsoir

en relisant le fil je m'aperçois que ça déjà été expliqué mais tant pis
comment renseigner les paramètres des boîtes de dialogue ??
comme suit : application.dialogs(nomounidexboite).show arg1:=xxxx arg2:=xxxx

il faut respecter l'ordre dans lequel les ^pamraètres sont indiqués dans la
page d'aide : "Listes d'arguments de boîte de dialogue intégrée"

les boîtes et les paramètres quels acceptent

xlDialogEditColor => color_num, red_value, green_value, blue_value
xlDialogColorPalette => file_text 'tiens un fichier texte en paramètre
???


par contre, c'est vrai qu'on est tous déçus sur la récupération des valeurs
choisies


bye
Stéphane


"Flori@n" <florian....@vnumail.com> a écrit dans le message news:
3b9f6326$0$6690$4362...@news-test.free.fr...

Robert Dezan

unread,
Sep 13, 2001, 3:22:31 PM9/13/01
to
Bonsoir Florian,
As-tu jeté un coup d'oeil sur les sites suivants ?
- Laurent Longre : la fonction API "Sélection de couleur par boîte de
dialogue " sur http://longre.free.fr/
- John Walkenbach sur http://j-walk.com/ss/excel/tips/tip49.htm
- une page très développée (un peu complexe) sur les couleur avec tableaux
et code sur http://www.geocities.com/davemcritchie/excel/colors.htm qui
comporte aussi des liens vers d'autres sites de couleurs
Cela pourrait peut être t'aider !
Cordialement
Robert Dezan

Flori@n <florian....@vnumail.com> a écrit dans le message :

Flori@n

unread,
Sep 13, 2001, 5:38:10 PM9/13/01
to
Merci, ça c'était bien compris; à force le répéter mon neurone a assimilé
le concept.
Mais cette boite renvoit effectivement vrai ou faux et moi je voulais la
valeur de la couleur choisie.
La solution est donnée par notre heureux gagnant du jour : Robert Dezan et
ses liens vers le site de Laurent Longre, site que j'aurais du consulter au
départ vu que c'est le premier d'une longue liste de liens qui garnissent
mes favoris concernant la prog avec excel (c'est long comme phrase, hein ?).
Stupido, le neurone a bloqué !

Merci donc à tous pour ce super long fil qui déborde de mon écran.
Bonne nuit à tous.

"STéphane" <steph...@free.fr> a écrit dans le message de news:
uFHdLgHPBHA.1404@tkmsftngp03...

Flori@n

unread,
Sep 13, 2001, 5:52:55 PM9/13/01
to
Merci Robert, le lien vers le site de Laurent suffit à me satisfaire
amplement. J'y ai trouvé effectivement ce que je cherchais. Je vais pouvoir
dormir sereinement...

"Robert Dezan" <rde...@noos.fr> a écrit dans le message de news:
eibqPnIPBHA.580@tkmsftngp04...

Benoît Marchand

unread,
Sep 13, 2001, 6:56:26 PM9/13/01
to
Arghhhhhhhhhhhhh !

J'ai flingué mes IndexColor avec tous mes test !

Merci, Iznogood, je n'avais pas remarquer que je modifiais la palette de couleur.*

A+
Benead

Iznogood a écrit :

> Je vais tâcher d'être compréhensible, sachant que ça devrait répondre aussi


> à la question de pascal.
> Application.Dialogs(xlDialogQQCHOSE) ne retourne que 2 valeurs :
> vrai si on clique su ok
> faux si on clique sur annuler.
> On ne récupère pas d'autres paramètres, mais on déclenche l'action prévue
> par la boite de dialogue.
>
> Exemple avec xlDialogOpen :
> Si on choisit un fichier et qu'oon clique sur OK,
> => on ouvre le fichier
> => on récupère Vrai
> => mais on ne récupère pas le nom du fichier !
>
> Avec xlDialogEditColor, on peut "éditer" les couleurs.

> Par exemple, la couleur n°1 qui est noire peut être remplacée pX-Mozilla-Status: 0009permet ensuite d'avoir du bleue quand on utilise la couleur 1.

Benoît Marchand

unread,
Sep 13, 2001, 7:42:26 PM9/13/01
to
Arghhhhhhhhhhhhh !

J'ai flingué mes IndexColor avec tous mes test !

Merci, Iznogood, je n'avais pas remarquer que je modifiais la palette de couleur.*

A+
Benead

Iznogood a écrit :

> Je vais tâcher d'être compréhensible, sachant que ça devrait répondre aussi


> à la question de pascal.
> Application.Dialogs(xlDialogQQCHOSE) ne retourne que 2 valeurs :
> vrai si on clique su ok
> faux si on clique sur annuler.
> On ne récupère pas d'autres paramètres, mais on déclenche l'action prévue
> par la boite de dialogue.
>
> Exemple avec xlDialogOpen :
> Si on choisit un fichier et qu'oon clique sur OK,
> => on ouvre le fichier
> => on récupère Vrai
> => mais on ne récupère pas le nom du fichier !
>
> Avec xlDialogEditColor, on peut "éditer" les couleurs.

> Par exemple, la couleur n°1 qui est noire peut être remplacée pX-Mozilla-Status: 0009permet ensuite d'avoir du bleue quand on utilise la couleur 1.

Benoît Marchand

unread,
Sep 13, 2001, 7:55:17 PM9/13/01
to

Arghhhhhhhhhhhhh !

J'ai flingué mes IndexColor avec tous mes test !

Merci, Iznogood, je n'avais pas remarquer que je modifiais la palette de couleur.*

A+
Benead

pascal engelmajer a écrit :

Benoît Marchand

unread,
Sep 13, 2001, 7:55:54 PM9/13/01
to

Arghhhhhhhhhhhhh !

J'ai flingué mes IndexColor avec tous mes tests !

Merci, Iznogood, je n'avais pas remarquer que je modifiais la palette de couleur.*

A+
Benead

Iznogood a écrit :

pascal engelmajer

unread,
Sep 14, 2001, 2:14:24 AM9/14/01
to
salut,
la nuit porte conseil et ce matin l'évidence m'est apparue ...

...
x.show 53
activeheet.shapes("rect1").fill.forecolor.RGB=thisworkbook.colors(53)..
amicalement
Pascal
Flori@n <flo.be...@laposte.net> a écrit dans le message :
XU9o7.2391$FT.32...@nnrp6.proxad.net...

Flori@n

unread,
Sep 14, 2001, 4:59:51 AM9/14/01
to
Resalut et merci,
Cette solution est moins lourde que l'utilisation de l'API expliqué sur le
site de Laurent Longres. Je la retiens aussi.
Voici, pour ceux que ça intérresse, la syntaxe qui permet de récupérer les
valeurs des composantes Rouge, Vert et Bleu d'une couleur :
....
coul = ThisWorkbook.Colors(53)
rouge = CByte(coul \ 1 And 255)
vert = CByte(coul \ 256 And 255)
bleu = CByte(coul \ 65536 And 255)
....

Vous pouvez trouver les résultats de ce fil dans un classeur disponible ici
: http://floriancecile.free.fr/develop/couldegrade.zip (68ko)

"pascal engelmajer" <pascal.e...@ilyapa.net> a écrit dans le message
de news: #qpjnTOPBHA.1788@tkmsftngp03...

0 new messages