Utiliser la fonction Recolorier (Recolor) dans une macro
Bonjour,
Je suis actuellement en stage et j'aurai besoin de votre aide pour utiliser la fonction Recolorier dans une macro car celle-ci ne s'enregistre pas.
J'ai trouvé ces formules là sur internet mais elles ne fonctionnent pas :
ActiveSheet.Shapes.Range(Array("Image 1")).PictureFormat.ColorType = BackColor.RGB(255, 0, 0)
ActiveSheet.Shapes.Range(Array("Image 1")).PictureFormat.Recolor
Pouvez-vous également m'indiquer comment remplacer le Image 1 par toutes les images de la feuille ?
Mon but est que toutes les images de la feuille passent Orange ou Noir.
EDIT : La fonction qui ne contient que 4-5 possiblités de couleur comme BlaclandWhite, GrayMark et autre ne m'intéresse pas car elle ne contient pas la couleur orange recherchée
Merci à vous tous !
Il faudrait que je rende le projet avant 19h s'il vous plait
S'il vous plait, je vous demande juste une simple ligne de code qu'il me manque, juste comment fonctionne le Recolor...!
Mon message n'aboutissant toujours pas, je vous joins une photo expliquant la couleur désirée :
La formule souhaitée est la suivante mais à la place de BlackandWhite j'aimerai le orange comme sur l'image :
ActiveSheet.Shapes.Range(Array("Image 1")).PictureFormat.ColorType = msoPictureBlackandWhite
Si cela peut aider l'un d'entre vous, le BlackandWhite peut etre remplacer par Grayscale mais ça n'est toujours pas la couleur que je souhaite ! De plus j'aimerai savoir comment remplacer le Array("Image 1")) par toutes les images de la feuille !
Merci à vous de m'aider !
Je continu à chercher et je suis tombé sur le fait que la fonction :
msoPictureBlackandWhite
Ne permet pas de faire ça, il me faudrait un RGB mais comment faire ?
Merci à vous tous
Bonjour,
en cherchant j'étais tombé également sur pictureformat.msotype mais c'est une vraie boite noire et quand j'ai essayé de fixer une couleur tout ce que j'ai eu c'est un message d'erreur me disant que vba attendait un tableau, de plus l'enregistreur de macros de semble pas enregistrer les opérations sur les images, du moins la majeure partie...
Bonne chance pour ton problème, mois je sèche...
Bonjour Ausecour,
Premièrement merci pour ta réponse,
Il est vrai que l'enregistreur de macro ne prend pas en compte les actions effectuées sur les images et ça me pose un gros problème...
J'ai essayé toutes les formules trouvées sur internet mais aucune de fonctionne, en cherchant dans la table de référence de la VBA j'ai trouvé des choses qui pourraient fonctionner grâce à la RGB notamment mais impossible de comprendre comme résoudre mon problème...
Merci tout de même de l'intention apporté à ma demande,
Bonne fin de journée
Bonjour,
pour faire avancer le smillblick :
Sub theme()
Dim i As Long
For i = 1 To ActiveWorkbook.theme.ThemeColorScheme.Count
Cells(i + 1, 1) = ActiveWorkbook.theme.ThemeColorScheme(i).ThemeColorSchemeIndex
Cells(i + 1, 3).Interior.Color = ActiveWorkbook.theme.ThemeColorScheme(i)
Cells(i + 1, 4) = Hex(ActiveWorkbook.theme.ThemeColorScheme(i).RGB)
Cells(i + 1, 5) = Cells(i + 1, 3).Interior.Color
Next i
End SubTa couleur serait donc msoThemeAccent2 = ActiveWorkbook.theme.ThemeColorScheme(6). Chez moi c'est une autre couleur mais commme ça dépend du thème choisi...
Par contre je n'ai pas encore trouvé si les nuances, Light pour toi, étaient intégrées.
Par contre tu peux déposer ta couleur dans une cellule et aller relever son n°, à convertir en RGB si tu en as besoin.
Pour le reste un fichier avec ton image aiderait à avancer. j'ai trouvé le type d'image
eric
Bonjour eriiic,
Tout d'abord merci du temps accordé,
Les codes de couleurs je les ai trouvé déjà, même si ton Excel pourra me servir plus tard si tout d'abord j'arrive à intégrer ces couleurs à mes images...
Pour l'image tu peux prendre n'importe laquelle, j'utilise uniquement des icones noires types stickman pour animer une explication, ce que je souhaite c'est simplement que le noir devienne orange sans forcément que les couleurs claires deviennent orange clair etc... Le tout dans la même teinte est suffisant.
Je n'ai pas trop compris tes lignes de VBA, n'est-il pas simplement nécessaire d'écrire une ligne qui regroupe la sélection et le changement de couleur comme celle-ci publiée plus tôt :
ActiveSheet.Shapes.Range(Array("Image 1")).PictureFormat.ColorType = msoPictureBlackandWhite
mais avec une fin de formule adapté ?
Si tu (ou quelqu'un) arrive à me publier un fichier Excel avec un bouton qui transforme toutes les images d'une feuille en Theme Accent 6 de ton document Excel (qui correspond parfaitement à ce que j'attend contrairement au 2) ou alors simplement une ligne de code qui permet de faire ça il me sauverait mon stage !...
EDIT : Peu importe si je dois aller chercher une formule dans une cellule, j'ai une feuille de donnée exprès pour mon programme, si juste la formule envoyée peut-être courte que je puisse y apporter des modifications en cas de futures mises à jour
Bon courage à ceux qui essayeront..!
Bonjour, Salut à tous !
Comme Ausecour, je n'ai pas trace de Recolor dans l'aide, donc vraisemblablement une méthode apparue après 2010, version que j'utilise actuellement. Difficile de t'aider tant qu'on n'a pas compris exactement ton propos, et sans fichier qu'on peut analyser et sur lequel tester des solutions, je ne m'y lance pas, sauf pour les cas les plus courants pour lesquels les solutions sont bien établies.
La collection Shapes, qui agrège des objets de natures diverses est devenue un véritable maquis de mon point de vue pour programmer. Certes, on a le plus souvent plusieurs solutions possibles pour arriver au résultat, mais on y va un peu au jugé, sans savoir au départ si ce qu'on essaie aboutira. La mise en forme des Shapes génère une multitude d'objets avec lesquels on oit jongler... Et l'enregistreur, en la matière, n'est souvent pas un secours pour détecter la syntaxe à utiliser, comme l'a noté Ausecour, certaines opérations ne sont carrément pas enregistrées. J'ai eu un cas avec un problème d'un demandeur qui butait justement sur un élément non enregistré, où il a fallu jouer les Sherlock pour trouver l'élément, à l'aide de l'explorateur d'objets, dont l'utilisation n'est pas vraiment évidente, puis construire la syntaxe par analogies...
Pour résumer donc je pense qu'il plus qu'utile que tu fournisses un fichier pour que l'on puisse t'apporter une aide effective.
Par contre pour ce qui est de prendre en considération toutes tes images, cela n'offrira que peu de difficulté. Ton exemple de procédure citée utilise déjà un objet ShapeRange (syntaxe : ...Shapes.Range(array("NomObjet")... pour une seule image, cas où tu pouvais te borner à : ...Shapes("NomObjet")... pour parvenir au même résultat. Il suffit d'introduire les autres dans ton Array...
Si tu n'as que les images concernées comme objets Shapes sur ta feuille, tu peux définir un objet ShapeRange qui les regroupe en totalité ! Ça passe par la sélection de tous les Shapes de la feuille et l'affectation à une variable objet, objet ShapeRange que tu utilises ensuite.
[NB- C'est le seul cas que je connaisse où je suis obligé d'admettre devoir utiliser un Select, passage obligatoire pour regrouper tous les Shapes d'une feuille dans un seul objet.]
Cordialement.
En fait j'étais resté sur ton "Ne permet pas de faire ça, il me faudrait un RGB mais comment faire ?"
et pensé que ton soucis était de récupérer la couleur.
Je n'ai compris qu'ensuite que c'était l'application de couleur à l'image. J'ai commencé à fouiller mais choux blanc comme vous pour l'instant.
eric
Bonjour MFerrand,
Merci à toi aussi de t'intéresser à mon problème.
Je vous ai envoyé ci-joint un fichier Excel qui explique ma demande (simplifiée car le document contient beaucoup plus d'icones dans plusieurs catégories)
Il faut aussi prendre en compte le fait que si l'image a besoin d'être décalée sur une autre feuille afin de pouvoir la sélectionner plus facilement ( car le bouton est considéré comme un objet également ) cela ne me pose pas de problème.
Peu importe comment vous voulez faire ça, ne vous inspirez pas des formules envoyées plus tôt car même en les manipulant aucune d'entre elles ne fonctionnent... Soyez libre de faire ce que vous voulez, la demande est vraiment très simple mais le problème est que l'enregistrement de la macro de prend pas en compte le changement de couleur et donc je ne sais pas comment le rajouter manuellement...
Merci à vous pour votre aide, en espérant trouver une solution d'ici ce soir...
@eriiic
Non Eric mon problème ne consiste pas à récupérer la couleur... Merci quand même de ton aide, et si tu peux essayer de trouver une solution même complexe je t'en serai très reconnaissant !
Tu es sûr que tu ne veux pas changer la couleur de fond plutôt ? Ca ferait très joli tu sais
En attendant, vu que tu as l'air pris par le temps, si tu n'as pas trop d'images et de couleurs tu pourrais te les préparer dans une feuille masquée et copier-coller.
eric
ahaha, Non désolé le but est d'avoir des résultats des icones utilisables pour des présentations PowerPoint. Les utilisateurs peuvent ajouter eux-mêmes leurs icones en les posant et en choisissant simplement une catégorie. La couleur principale utilisée est le orange donc j'ai réussi à faire en sorte de trier les icones dans la catégorie, les colorer en noir, garder la couleur d'origine (si l'option est cochée) mais il me manque le passage vert cette couleur orange pour aboutir au résultat demandé... Sérieusement ils peuvent aussi faire des powerpoints en noir et blanc et je ne me prendrai pas autant la tete! :p
Merci de l'aide Eriiic !
Quelqu'un pourrait essayé de faire une formule qui permettrait de changer la couleur d'une image (pas le fond malheureusement) grâce à des valeurs RGB? Parce qu'en soit c'est juste ça que je cherche à faire...
On a bien compris. On est comme toi, l'exploration des propriétés n'ayant rien donné on sèche
Re,
Un survol sur le net ne m'a fait apparaître que des tentatives infructueuses, laissant éventuellement penser que Microsoft a fait l'impasse sur Excel (notamment) en la matière.
Les exemples qu'il fournit pour Recolor ne concerne que Publisher... ?
Pour ma part, j'ai essayé de l'utiliser, pas de mise en forme de VBA, et erreur 438 au bout. Mais en effet pour Excel 2010 cette méthode n'existe pas, mais qu'en est-il pour les versions ultérieures.
L'as-tu essayée ?
Sinon, en colorant manuellement tes images, tu peux les remettre en noir avec ColorType (msoPictureAutomatic).
Sinon encore, solution de créer un jeu de différentes couleurs que tu peux manipuler en les rendant visible ou non... déjà proposée par Eric.
J'aurai bien aimé pouvoir faire en sorte de rendre les couleurs visibles puis invisibles pour arriver à un résultat convainquant mais le problème est que les images sont intégrées par l'utilisateur et ensuite adaptées par la macro en les classant dans une catégorie (choisie par l'utilisateur) et en changeant la couleur par Noir, Couleur lors de l'envoi (si coché par l'utilisateur), ainsi que Orange car c'est une des couleurs primaires de la boite et beaucoup utilisées lors de présentation ppt... C'est une grosse base de données d'icone (sans droits d'auteurs) pouvant être utilisée par l'utilisateur et l'option que j'essaie d'intégrer c'est l'utilisateur peut intégrer les icones de son choix
Etant donné que l'image Orange doit être créée avant de pouvoir jongler avec, cette option est impossible à réaliser...
C'est quand même bizarre parce qu'on peut Recolorier les images de deux façons possibles, Grayscale qui fait Nuances de gris et BlackandWhite qui fait du noir et blanc... Il doit y avoir un moyen qui malheureusement nous échappe..
J'abandonne...
Merci à tous de votre aide