Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Boutons de couleur ?

9 réponses
Avatar
PM
Bonjour !

Je souhaite créer un menu contextuel qui :

. présente les couleurs d'une palette perso
. remplisse la case cliquée (clic droit) avec la couleur sélectionnée.

J'ai rédigé ce code (en pompant généreusement l'aide Excel et Fredéric
Sigonneau !) :

'élimine les contrôles du menu contextuel cellule
For Each icbc In Application.CommandBars("Cell").Controls
icbc.Delete
Next icbc

'ajoute les options de couleur
For i = nb_couleurs To 1 Step -1
With Application.CommandBars("Cell").Controls _
.Add(Type:=msoControlButton, before:=1, temporary:=True)
.Caption = "Couleur " & i
.OnAction = "affecter_couleur" & i 'peu élégant mais
ça marche
.Tag = "couleur" & i
Cells(l1, c1 - 1 + i).Copy 'va
chercher la couleur sur la feuille Excel
.PasteFace

End With
Next

Cette solution ne marche pas. Les couleurs ne sont pas copiées du
presse-papier vers le bouton.Tous les boutons apparaissent blancs.
Par ailleurs, je préférerais ne pas avoir de "caption", juste les couleurs.

Comment faire ?

9 réponses

Avatar
Misange
bonjour,
tu trouveras un exemple à télécharger mettant en oeuvre une macro de
Laurent Longre sur excelabo
http://www.excelabo.net/moteurs/compteclic.php?nomü-couleurs

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

on 13/09/2004 09:56:
Bonjour !

Je souhaite créer un menu contextuel qui :

. présente les couleurs d'une palette perso
. remplisse la case cliquée (clic droit) avec la couleur sélectionnée.

J'ai rédigé ce code (en pompant généreusement l'aide Excel et Fredéric
Sigonneau !) :

'élimine les contrôles du menu contextuel cellule
For Each icbc In Application.CommandBars("Cell").Controls
icbc.Delete
Next icbc

'ajoute les options de couleur
For i = nb_couleurs To 1 Step -1
With Application.CommandBars("Cell").Controls _
.Add(Type:=msoControlButton, before:=1, temporary:=True)
.Caption = "Couleur " & i
.OnAction = "affecter_couleur" & i 'peu élégant mais
ça marche
.Tag = "couleur" & i
Cells(l1, c1 - 1 + i).Copy 'va
chercher la couleur sur la feuille Excel
.PasteFace

End With
Next

Cette solution ne marche pas. Les couleurs ne sont pas copiées du
presse-papier vers le bouton.Tous les boutons apparaissent blancs.
Par ailleurs, je préférerais ne pas avoir de "caption", juste les couleurs.

Comment faire ?





Avatar
PM
Merci Misange !

J'ai regardé ce code hyper-pro... et je vais tenter d'y trouver mon bonheur.

Ce que je cherche à faire est un peu différent.
Je fais remplir un questionnaire. Les réponses sont des couleurs. Elles sont
en nombre limité, variable d'une fois sur l'autre. Cela va de trois couleurs
à cinq dans tous les cas normaux, plus les deux non-réponses (ne sait pas
répondre, ne veut pas répondre). Ce nombre variable de couleurs correspond à
une palette variable, mais fixée par le questionnaire. Par exemple,
vert/jaune/rouge + blanc/gris.
Dans ce cas, je souhaite faire apparaître par clic droit ces cinq couleurs
et surtout rien de plus, palette que je dois donc aller chercher sur la
feuille...
En plus (comme on peut être exigeant...), j'aurais préféré un menu
contextuel très sobre plutôt qu'un user-form...

Patrick

PS. J'apprécie bcp Excelabo que j'ai bien pratiqué pour mon projet. Merci
mille fois !

"Misange" a écrit dans le message de
news:
bonjour,
tu trouveras un exemple à télécharger mettant en oeuvre une macro de
Laurent Longre sur excelabo
http://www.excelabo.net/moteurs/compteclic.php?nomü-couleurs

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

on 13/09/2004 09:56:
Bonjour !

Je souhaite créer un menu contextuel qui :

. présente les couleurs d'une palette perso
. remplisse la case cliquée (clic droit) avec la couleur
sélectionnée.



J'ai rédigé ce code (en pompant généreusement l'aide Excel et Fredéric
Sigonneau !) :

'élimine les contrôles du menu contextuel cellule
For Each icbc In Application.CommandBars("Cell").Controls
icbc.Delete
Next icbc

'ajoute les options de couleur
For i = nb_couleurs To 1 Step -1
With Application.CommandBars("Cell").Controls _
.Add(Type:=msoControlButton, before:=1, temporary:=True)
.Caption = "Couleur " & i
.OnAction = "affecter_couleur" & i 'peu élégant
mais


ça marche
.Tag = "couleur" & i
Cells(l1, c1 - 1 + i).Copy 'va
chercher la couleur sur la feuille Excel
.PasteFace

End With
Next

Cette solution ne marche pas. Les couleurs ne sont pas copiées du
presse-papier vers le bouton.Tous les boutons apparaissent blancs.
Par ailleurs, je préférerais ne pas avoir de "caption", juste les
couleurs.



Comment faire ?







Avatar
Frédéric Sigonneau
Bonsoir,

Tu pourrais extrapoler un peu à partir du bout de code ci-dessous. Pour donner
le résultat attendu, tu dois d'abord créer, avec paint par exemple, un petit
bitmap de 16x16 ou 32x32, de couleur verte. Ensuite, recopie le code dans un
module standard du classeur qui t'intéresse, change l'adresse du fichier .bmp
pour celle de ton fichier vert sur ton disque dur et exécute la procédure
CreateMenuCouleurs. Enfin, dans Excel, clique droit sur une cellule et choisis
dans le menu 'Choix couleurs' la commande verte (c'est la seule de tout façon :).

'======================== Sub CreateMenuCouleurs()
Dim MonMenu
Dim imgVert As IPictureDisp

DelMenuCouleurs
Set MonMenu = Application.CommandBars("Cell").Controls.Add(Type:=msoControlPopup)
MonMenu.Caption = "Choix couleurs"
Set imgVert = stdole.StdFunctions.LoadPicture("D:Vert2.bmp")
With MonMenu.Controls.Add(msoControlButton)
.Picture = imgVert
.OnAction = "MacroExempleVert"
End With

End Sub

Sub DelMenuCouleurs()
On Error Resume Next
Application.CommandBars("Cell").Controls("Choix couleurs").Delete
End Sub

Sub MacroExempleVert()
ActiveCell.Interior.Color = vbGreen
End Sub
'========================
Note : ce code fonctionne avec Excel 2002 et sans doute 2003. Pour 97 et 2000 je
ne sais pas.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Merci Misange !

J'ai regardé ce code hyper-pro... et je vais tenter d'y trouver mon bonheur.

Ce que je cherche à faire est un peu différent.
Je fais remplir un questionnaire. Les réponses sont des couleurs. Elles sont
en nombre limité, variable d'une fois sur l'autre. Cela va de trois couleurs
à cinq dans tous les cas normaux, plus les deux non-réponses (ne sait pas
répondre, ne veut pas répondre). Ce nombre variable de couleurs correspond à
une palette variable, mais fixée par le questionnaire. Par exemple,
vert/jaune/rouge + blanc/gris.
Dans ce cas, je souhaite faire apparaître par clic droit ces cinq couleurs
et surtout rien de plus, palette que je dois donc aller chercher sur la
feuille...
En plus (comme on peut être exigeant...), j'aurais préféré un menu
contextuel très sobre plutôt qu'un user-form...

Patrick

PS. J'apprécie bcp Excelabo que j'ai bien pratiqué pour mon projet. Merci
mille fois !

"Misange" a écrit dans le message de
news:

bonjour,
tu trouveras un exemple à télécharger mettant en oeuvre une macro de
Laurent Longre sur excelabo
http://www.excelabo.net/moteurs/compteclic.php?nomü-couleurs

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

on 13/09/2004 09:56:

Bonjour !

Je souhaite créer un menu contextuel qui :

. présente les couleurs d'une palette perso
. remplisse la case cliquée (clic droit) avec la couleur



sélectionnée.

J'ai rédigé ce code (en pompant généreusement l'aide Excel et Fredéric
Sigonneau !) :

'élimine les contrôles du menu contextuel cellule
For Each icbc In Application.CommandBars("Cell").Controls
icbc.Delete
Next icbc

'ajoute les options de couleur
For i = nb_couleurs To 1 Step -1
With Application.CommandBars("Cell").Controls _
.Add(Type:=msoControlButton, before:=1, temporary:=True)
.Caption = "Couleur " & i
.OnAction = "affecter_couleur" & i 'peu élégant



mais

ça marche
.Tag = "couleur" & i
Cells(l1, c1 - 1 + i).Copy 'va
chercher la couleur sur la feuille Excel
.PasteFace

End With
Next

Cette solution ne marche pas. Les couleurs ne sont pas copiées du
presse-papier vers le bouton.Tous les boutons apparaissent blancs.
Par ailleurs, je préférerais ne pas avoir de "caption", juste les



couleurs.

Comment faire ?












Avatar
Philippe.R
Bonsoir Frédéric,
Avec Excel 97, j'obtiens une erreur sur cette ligne :
.Picture = imgVert
Donc, il y en a un des deux (Excel97 ou moi) qui déconne !
;o))
--
Amicales Salutations
XL 97 / 2000 / 2002
Retirer A_S_ pour répondre en privé.

"Frédéric Sigonneau" a écrit dans le message de
news:
Bonsoir,

Tu pourrais extrapoler un peu à partir du bout de code ci-dessous. Pour donner
le résultat attendu, tu dois d'abord créer, avec paint par exemple, un petit
bitmap de 16x16 ou 32x32, de couleur verte. Ensuite, recopie le code dans un
module standard du classeur qui t'intéresse, change l'adresse du fichier .bmp
pour celle de ton fichier vert sur ton disque dur et exécute la procédure
CreateMenuCouleurs. Enfin, dans Excel, clique droit sur une cellule et choisis
dans le menu 'Choix couleurs' la commande verte (c'est la seule de tout façon :).

'======================== > Sub CreateMenuCouleurs()
Dim MonMenu
Dim imgVert As IPictureDisp

DelMenuCouleurs
Set MonMenu = Application.CommandBars("Cell").Controls.Add(Type:=msoControlPopup)
MonMenu.Caption = "Choix couleurs"
Set imgVert = stdole.StdFunctions.LoadPicture("D:Vert2.bmp")
With MonMenu.Controls.Add(msoControlButton)
.Picture = imgVert
.OnAction = "MacroExempleVert"
End With

End Sub

Sub DelMenuCouleurs()
On Error Resume Next
Application.CommandBars("Cell").Controls("Choix couleurs").Delete
End Sub

Sub MacroExempleVert()
ActiveCell.Interior.Color = vbGreen
End Sub
'======================== >
Note : ce code fonctionne avec Excel 2002 et sans doute 2003. Pour 97 et 2000 je
ne sais pas.

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !

Merci Misange !

J'ai regardé ce code hyper-pro... et je vais tenter d'y trouver mon bonheur.

Ce que je cherche à faire est un peu différent.
Je fais remplir un questionnaire. Les réponses sont des couleurs. Elles sont
en nombre limité, variable d'une fois sur l'autre. Cela va de trois couleurs
à cinq dans tous les cas normaux, plus les deux non-réponses (ne sait pas
répondre, ne veut pas répondre). Ce nombre variable de couleurs correspond à
une palette variable, mais fixée par le questionnaire. Par exemple,
vert/jaune/rouge + blanc/gris.
Dans ce cas, je souhaite faire apparaître par clic droit ces cinq couleurs
et surtout rien de plus, palette que je dois donc aller chercher sur la
feuille...
En plus (comme on peut être exigeant...), j'aurais préféré un menu
contextuel très sobre plutôt qu'un user-form...

Patrick

PS. J'apprécie bcp Excelabo que j'ai bien pratiqué pour mon projet. Merci
mille fois !

"Misange" a écrit dans le message de
news:

bonjour,
tu trouveras un exemple à télécharger mettant en oeuvre une macro de
Laurent Longre sur excelabo
http://www.excelabo.net/moteurs/compteclic.php?nomü-couleurs

Misange migrateuse http://www.excelabo.net
mail : http://cerbermail.com/?k5Q8Dh2mta

on 13/09/2004 09:56:

Bonjour !

Je souhaite créer un menu contextuel qui :

. présente les couleurs d'une palette perso
. remplisse la case cliquée (clic droit) avec la couleur



sélectionnée.

J'ai rédigé ce code (en pompant généreusement l'aide Excel et Fredéric
Sigonneau !) :

'élimine les contrôles du menu contextuel cellule
For Each icbc In Application.CommandBars("Cell").Controls
icbc.Delete
Next icbc

'ajoute les options de couleur
For i = nb_couleurs To 1 Step -1
With Application.CommandBars("Cell").Controls _
.Add(Type:=msoControlButton, before:=1, temporary:=True)
.Caption = "Couleur " & i
.OnAction = "affecter_couleur" & i 'peu élégant



mais

ça marche
.Tag = "couleur" & i
Cells(l1, c1 - 1 + i).Copy 'va
chercher la couleur sur la feuille Excel
.PasteFace

End With
Next

Cette solution ne marche pas. Les couleurs ne sont pas copiées du
presse-papier vers le bouton.Tous les boutons apparaissent blancs.
Par ailleurs, je préférerais ne pas avoir de "caption", juste les



couleurs.

Comment faire ?














Avatar
Frédéric Sigonneau
Salut Philippe,

A mon avis, c'est Excel 97 !
Il est bien possible que la propriété Picture n'existât point avec son VBA 5.
J'aurais pourtant plutôt eu un doute sur l'objet IPictureDisp mais bon, le
résultat est le même et j'espère que PM, qui n'en souffle mot, ne travaille pas
justement avec cette version...

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !


Bonsoir Frédéric,
Avec Excel 97, j'obtiens une erreur sur cette ligne :
.Picture = imgVert
Donc, il y en a un des deux (Excel97 ou moi) qui déconne !
;o))


Avatar
sabatier
"Frédéric Sigonneau" a écrit dans le message de
news:OVt$
Salut Philippe,

A mon avis, c'est Excel 97 !
Il est bien possible que la propriété Picture n'existât point avec son VBA
5.

J'aurais pourtant plutôt eu un doute sur l'objet IPictureDisp mais bon, le
résultat est le même et j'espère que PM, qui n'en souffle mot, ne
travaille pas

justement avec cette version...

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !


Bonsoir Frédéric,
Avec Excel 97, j'obtiens une erreur sur cette ligne :
.Picture = imgVert
Donc, il y en a un des deux (Excel97 ou moi) qui déconne !
;o))




Avatar
sabatier
certes, certes, frédéric, mais encore eût-il fallu que les temps
concordassent....
jps

"Frédéric Sigonneau" a écrit dans le message de
news:OVt$
Salut Philippe,

Il est bien possible que la propriété Picture n'existât point....


Avatar
Frédéric Sigonneau
Et ils ne concordassaient pas :(
En pénitence, je m'engage publiquement ici à avoir lu les oeuvres complètes de
Louis-Michel Bescherelle avant mon soixante-dixième annversaire...

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !


certes, certes, frédéric, mais encore eût-il fallu que les temps
concordassent....
jps

"Frédéric Sigonneau" a écrit dans le message de
news:OVt$

Salut Philippe,

Il est bien possible que la propriété Picture n'existât point....







Avatar
sabatier
:-))))))))))
n'est-ce pas Voltaire qui disait qu'il fallait beschereller son jardin?
jps

"Frédéric Sigonneau" a écrit dans le message de
news:
Et ils ne concordassaient pas :(
En pénitence, je m'engage publiquement ici à avoir lu les oeuvres
complètes de

Louis-Michel Bescherelle avant mon soixante-dixième annversaire...

FS
---
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://frederic.sigonneau.free.fr
Si votre question sur Excel est urgente, évitez ma bal !


certes, certes, frédéric, mais encore eût-il fallu que les temps
concordassent....
jps

"Frédéric Sigonneau" a écrit dans le
message de


news:OVt$

Salut Philippe,

Il est bien possible que la propriété Picture n'existât point....