[VBA EXCEL] FaceId/icone

Résolu
adminatethiq Messages postés 16 Date d'inscription lundi 13 février 2012 Statut Membre Dernière intervention 16 février 2012 - 13 févr. 2012 à 14:41
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 16 févr. 2012 à 16:48
Bonjour,

J'espère être au bon endroit. (pardon sinon)

Je travaille en vb sous excel et je souhaiterais utiliser les icones que l'on peut trouver dans le format d'une cellule > motifs > ombrage de cellule > couleur.

Comment puis-je utiliser cette icone (ou son FaceId, pas trouvé sur le net) déjà présente dans excel pour m'en servir dans un menu contextuel ?

Sachant que ces icones existent et je ne souhaite pas les personnaliser ni même créer de fichiers images supplémentaires.

Je suis à court d'idées.

merci à tous,

40 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 févr. 2012 à 17:54
sera alors un carré d'une des 10 couleurs disponibles

Et qu'est qui t'en empêche donc ?
Attribue-lui la couleur de ton choix ! utilise au besoin la fonction RGB ===>> RGB(r,g,b) où r, g et b sont les valeurs de ton choix, chacune entre 0 et 255 !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
adminatethiq Messages postés 16 Date d'inscription lundi 13 février 2012 Statut Membre Dernière intervention 16 février 2012
15 févr. 2012 à 08:45
Bonjour,

visiblement nous ne nous comprenons pas ucfoutu... Pourrais-tu arrêter de répondre à coté de mes questions ? merci...

Un .FaceId n'accepte qu'un nombre entre [0-10000] qui sont des icones prédéfinies. Parmis elles, il existe 10 icones de couleur parmi les 40 apparaissant dans cette fameuse boite de dialogue. Mais les 30 restantes sont forcément définies quelque part...

merci à pivert pour ses recherches fructueuses...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 févr. 2012 à 10:09
merci à pivert pour ses recherches fructueuses...

Si "fructueuses", alors a rapporté ses "fruits", donc ===>> tag "réponse acceptée" et terminé pour ce sujet.

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
adminatethiq Messages postés 16 Date d'inscription lundi 13 février 2012 Statut Membre Dernière intervention 16 février 2012
15 févr. 2012 à 10:47
Après analyse du code fourni par pivert, je me rends compte que la structure de mon menu contextuel est quasi identique... sniff...

Pensez-vous qu'il soit toutes fois possible de créer une icone (de lui attribuer ensuite un FaceId) en dupliquant une cellule paramétrée dans une de mes feuilles excel ?

merci.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 févr. 2012 à 11:01
snif, hein ...
Tu devrais vraiment tout relire, adminatethiq
Une dernière fois : ce ne sont ni des faceId, ni des icônes, mais des contrôles (shapes ou labels, je n'en sais rien puisque par le concepteur de cette fenêtre) mis dans une fenêtre de type boîte de dialogue.
La couleur qu'ils affichent (chacun d'eux) est celle de la palette
Si aucune palette personnalisée n'a été définie pour un classeur, c'est la palette par défaut qui est appliquée.
Cette palette peut être personnalisée pour chaque classeur (différente). Et c'est bien la meilleure preuve de ce qu'il ne s'agit ni de faceId ni d'icône, mais tout simplements de petits contrôles dont la couleur est modifiable (si on veutr personnaliser la palette d'un classeur).

Ouvre ton aide VBA sur ActiveWorkbook.Colors et lis donc ===>> tu commenceras probablement à comprendre ce qu'il y a derrière.

Un dernier point : c'est à l'ouverture d'un classeur (après l'avoir enregistré), que les modifications apportées se "manifestent", bien évidemment

voilà voilou...

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 févr. 2012 à 11:33
Bonjour, Le Pivert,
Détrompe-toi :
Il est tout-à-fait possible de créer un faceid et de lui attribuer un N°
Mais c'est là un chemin bien tortueux en lieu et place de ce qui est fort simple à mettre en oeuvre (pourquoi passer par un faceid, d'ailleurs, pour ce qu'il veut faire ? That's the question ! )
Mais il s'entête et reste sur son idée, commençant presque à s'énerver, à me demander de ne plus répondre ... alors ===>>






____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
15 févr. 2012 à 11:50
Si il est possible de créer un FaceID personnalisé. Je pense qu'il ne fonctionnera que sur sa machine???????????
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 févr. 2012 à 12:30
Ben non, le Pivert ===>>
Il lui suffit de le créer au Workbook_open
La question est toutefois : comment le créer ?
Et la réponse est ===>>> à l'aide ... d'un contrôle (image ou label)...
Elle est bien bonne, alors ...
Créer un faceid à l'aide d'un contrôle label, pour afficher quoi ? un faceid créé à partir d'un label au lieu d'afficher directement (et pour moins cher) un... label (celui ayant servi à la création du faceid) ...
Quand je parlais de chemin "tortueux" ...
Amusante, cette discussion.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 févr. 2012 à 12:47
Et une chose doit être très claire :
- ou il propose (et il n'échappera pas à la boîte de dialogue à créer) un choix de couleurs
- ou il impose une seule couleur (et n'a alors besoin ni de label, ni de faceid, ni de boîte de dialogue, ni de rien d'autre) .... juste le code d'application de cette couleur au contrôle ou à la cellule dotée de son menu contextuel



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
adminatethiq Messages postés 16 Date d'inscription lundi 13 février 2012 Statut Membre Dernière intervention 16 février 2012
15 févr. 2012 à 13:49
Je ne désire qu'une chose, pouvoir par n'importe quel moyen afficher un carré de couleur dans la colonne de gauche d'un menu contextuel.

exemple:



à la place de la paire de ciseaux: un carré vert...

possible ou non ? si oui comment ?

merci d'avance.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
15 févr. 2012 à 16:18
J'ai cherché et j'ai trouvé!!!!!!!

Je reprends mon exemple du site indiqué plus haut.
Tout d'abord tu inseres une image en A1 Feuil1
Ensuite tu cherches dans l'exemple ce passage: et tu le rectifie comme indiqué:

  With MySubMenu
        .Caption = "Case Menu"
        .Tag = "My_Cell_Control_Tag"
 ThisWorkbook.Sheets("Feuil1").Shapes("Image 1").Copy
        With .Controls.Add(Type:=msoControlButton)
            .OnAction = "'" & ThisWorkbook.Name & "'!" & "UpperMacro"
             .PasteFace
           ' .FaceId = 100
            .Caption = "Upper Case"
        End With



Le Pivert
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
15 févr. 2012 à 16:23
J'ai appuyé sur envoyé, je n'avais pas fini. Ensuite tu supprimes ton image de la feuille et tu passes à une autre images etc.
Si tu ny arrives pas, poste ton code. Mais je pense que tu n'auras aucune difficulté.

@+Le Pivert
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
15 févr. 2012 à 16:45
Petite précision si tu crées ton menu contextuel à l'ouverture du classeur, il ne faut pas supprimé l'image. A ce moment là tu la mets sur une autre feuille.
Voici le code pour copier une cellule dans la quelle tu auras mis ta couleur et redimensionnée en carré, comme l'avait spécifié UCFOUTU dans un précédent message:

 ThisWorkbook.Sheets("Feuil1").Range("A1").Copy
        With .Controls.Add(Type:=msoControlButton)
            .OnAction = "'" & ThisWorkbook.Name & "'!" & "LowerMacro"
             .PasteFace
            '.FaceId = 91
            .Caption = "Lower Case"
        End With


même condition que pour l'image il faut le garder si macro à l'ouverture
@+Le Pivert
0
adminatethiq Messages postés 16 Date d'inscription lundi 13 février 2012 Statut Membre Dernière intervention 16 février 2012
16 févr. 2012 à 09:01
Bonjour,

Le .copy .paste fonctionne bien pour couleur/motif/bordure d'une cellule, cependant si du texte se trouve dans la cellule, il n'apparait pas dans le menu contextuel...

Que me conseillez-vous ?

merci.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
16 févr. 2012 à 09:47
Le plus simple: tu crées une image avec le texte dessus avec un logiciel de retouche image. Ensuite tu n'as qu'à copié l'image comme dans le 1er exemple que je t'ai donné. Il ne faut pas que tu supprimes les images qui ont été collées. C'est une erreur de ma part de t'avoir dit cela.

@+Le Pivert
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
16 févr. 2012 à 11:32
Après vérification, chez moi (Excel 2003)la cellule est entièrement copié: couleur et texte. Mais l'icone est tellement petite que l'on distingue très mal le texte. Fais un essai en ne mettant que 2 lettres, tu verras le résultat. Avec des couleurs contrastées (fond jaune, texte bleu foncé).
0
adminatethiq Messages postés 16 Date d'inscription lundi 13 février 2012 Statut Membre Dernière intervention 16 février 2012
16 févr. 2012 à 13:43
Je vais opter pour les copies d'images...

Toujours concernant les FaceId, sauriez-vous quelle action correspond au FaceId 9335 (sorte de cellule coupée en deux par une diagonale montante et évidée dans sa partie supérieure) ?

merci.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
16 févr. 2012 à 14:01
Pour connaitre la signification de cette icône, tu fais Outils- Personnaliser- Commande et tu les passes toutes en revue. Pour ma part j'ai chercher sur Excel 2003, je ne l'ai pas trouvé. Elle existe certainement sur 2007 ou 2010.
0
adminatethiq Messages postés 16 Date d'inscription lundi 13 février 2012 Statut Membre Dernière intervention 16 février 2012
16 févr. 2012 à 16:03
J'ai inséré toutes mes images dans ma feuille, désormais je souhaiterais connaitre le nom qui leur a été attribué.

Il n'existe pas de propriété des images... Le nom d'origine de chaque image ne fonctionne pas...

ActiveSheet.Shapes("toto.bmp").Copy provoque une erreur
ActiveSheet.Shapes("Image n").Copy idem

Pourriez-vous m'aider ?

merci.
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
16 févr. 2012 à 16:48
Dans l'exemple que je t'ai donné, tu as l'explication:
ThisWorkbook.Sheets("Feuil1").Shapes("Image 1").Copy

Image2, Image3 etc.

Sur ta feuille elles sont reconnues par ordre d'entrée.
0
Rejoignez-nous