XL pour MAC Liste déroulante qui affiche une image

6mxw9

XLDnaute Nouveau
Bonjour à tous,

J'ai trouvé quelques fils de discussion sur ce thème, mais rien de concluant pour moi. Du moins, je n'arrive pas à comprendre avec le jargon technique...

Ce que je souhaite faire, c'est une liste déroulante avec comme choix : Blanc, Paille, Ambré, Dark. Et pour chaque choix, une petite image d'une goutte qui correspond à la couleur.

Si je choisi Blanc, l'image de la goutte blanche s'affiche. Si je choisi Paille, la goutte jaune s'affiche. Etc...

Dans l'idéal, j'aimerai que dans ma cellule, le mot et l'image soient présents. Voyez une capture d'écran en fichier joint pour mieux comprendre.

Merci à vous !

Capture d’écran 2020-07-02 à 21.05.25 copie.jpg
 

6mxw9

XLDnaute Nouveau
Bonjour,

Je crois que j'approche du but. J'ai suivi ce tutoriel de Parti'Prof, c'est exactement ce que je cherche à faire. Seulement, arrivé à la dernière étape où il faut entrer la valeur après avoir cliqué sur appareil photo, j'ai le message d'erreur suivant "La référence n'est pas valide.". Je n'arrive pas à comprendre ce que j'ai raté. Auriez-vous une idée ?
 

job75

XLDnaute Barbatruc
Bonjour 6mxw9,

C'est un problème très classique, voyez le fichier joint et cette macro dans le code de la feuille :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Shapes.Range(Array("Blanc", "Paille", "Ambré", "Dark")).Visible = False
If [D4] <> "" Then Shapes([D4]).Visible = True
End Sub
Les Shapes (ellipses) ont été renommées du nom de leur couleur.

A+
 

Pièces jointes

  • Images(1).xlsm
    16 KB · Affichages: 19

6mxw9

XLDnaute Nouveau
Bonjour Job75, et merci pour votre réponse.

Je ne parviens pas à trouver où ce trouve ce code dans votre fichier, afin que je puisse comprendre comment l'installer dans mon document.

Je vous mets en pièce jointe mon document, la feuille 1 est la feuille "finale", je fais mes essais dans la feuille 2 et 3, pouvez vous me dire ce qui n'est pas bon ?

Merci encore !
 

Pièces jointes

  • Classeur2.xlsx
    10.9 KB · Affichages: 7

6mxw9

XLDnaute Nouveau
Exact, j'ai trouvé le code comme vous me l'avez indiqué. Sur Mac c'est identique a priori.

J'ai donc fait la même chose, ça à l'air de fonctionner, les images changent bien en fonction du nom que je met, en revanche, j'ai une fenêtre d'erreur qui apparait, voyez la capture d'écran.

Et ensuite, comment ça se fait que l'image qui doit apparaitre dans l'encadré soit si grande en taille ?

En tout cas, merci, j'avance doucement mais surement !
 

Pièces jointes

  • Capture d’écran 2020-07-03 à 11.55.49 copie.jpg
    Capture d’écran 2020-07-03 à 11.55.49 copie.jpg
    259.3 KB · Affichages: 17

6mxw9

XLDnaute Nouveau
Je vous mets en pièce jointe les icônes et le fichier xls.

Mon but étant que dans les cellules "Couleur" de la feuille 1, je puisse choisir et faire apparaitre l'icône correspondante. Et que je puisse laisser les "formules" dans la feuille 2, pour ne pas "encombrer" ma première feuille.

EDIT : Même en suivant à la lettre cette vidéo, Youtube, je retrouve le même message d'erreur de "référence invalide". Est-ce un problème de version de logiciel ? Je suis sur 2019.
 

Pièces jointes

  • _Rhum Brun _ Dark rum.png
    _Rhum Brun _ Dark rum.png
    511 bytes · Affichages: 11
  • _Rhum blanc.png
    _Rhum blanc.png
    793 bytes · Affichages: 8
  • _Rhum Ambré.png
    _Rhum Ambré.png
    521 bytes · Affichages: 9
  • _Rhum Paille.png
    _Rhum Paille.png
    520 bytes · Affichages: 8
  • Classeur2.xlsx
    10.9 KB · Affichages: 6
Dernière édition:

job75

XLDnaute Barbatruc
Téléchargez les fichiers zippés joints dans le même dossier (le bureau).

La macro dans la feuille du fichier Images(2).xlsm :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect(Target, [E:E], UsedRange)
If Target Is Nothing Then Exit Sub
Dim o As Object
Application.ScreenUpdating = False
For Each Target In Target 'si entrées multiples (copier-coller)
    For Each o In DrawingObjects
        If Not Intersect(o.TopLeftCell, Target.MergeArea) Is Nothing Then o.Delete 'RAZ
    Next o
    On Error Resume Next
    Set o = Pictures.Insert(ThisWorkbook.Path & "\" & Target & ".png")
    o.Top = Target.Top + (Target.MergeArea.Height - o.Height) / 2
    o.Left = Target(1, 2).Left - o.Width - 6
Next Target
End Sub
Elle se lance quand on renseigne une cellule en colonne E.

Nota : chez moi Rhum ambré ne passe pas, Rhum ambre (sans accent) passe.

A+
 

Pièces jointes

  • Images(2).zip
    18.8 KB · Affichages: 7

6mxw9

XLDnaute Nouveau
J'imagine que ça doit être quelque chose d'enfantin pour vous, mais je vous avoue ne pas du tout comprendre.
Je vais encore potasser pour ce code, mais je pense que je vais trouver une autre solution sans image. Tant pis.

Merci d'avoir pris le temps en tout cas !
 

6mxw9

XLDnaute Nouveau
Le fichier que vous avez joins juste avant, je ne retrouve pas les manipulations telles que : créer la liste des noms, la colonne des images ainsi que la colonne de leur chemin.

Là, je suis en train d'essayer de refaire toute la vidéo, et je vais essayer votre code macro pour voir ce que ça donne.
 

6mxw9

XLDnaute Nouveau
Non, vraiment, je ne comprends pas.

J'ai repris à 0 la vidéo, installé votre code, et toujours le même message d'erreur. Il y forcément quelque chose que je ne fais pas correctement.

Cette ligne du code :

VB:
Set o = Pictures.Insert(ThisWorkbook.Path & "\" & Target & ".png")

C'est là où je dois entrer le chemin où se trouvent les images ? Entre les "\" ? Et ".png", je dois le laisser tel quel ?
 

Discussions similaires

Statistiques des forums

Discussions
312 165
Messages
2 085 882
Membres
103 010
dernier inscrit
Sys974