Afficher une image en fonction du contenu de la cellule

fanny_746

XLDnaute Nouveau
Bonjour à tous,

J'utilise un tableau Excel pour suivre le stock de plus de 300 produits chimiques dans une entreprise. Je cherche à améliorer la lisibilité de ce tableau en intégrant des pictogrammes, pour la toxicité des produits notamment.

Je souhaite donc, en fonction du contenu de la cellule (F, Xn, Xi...) faire apparaître automatiquement le pictogramme de danger correspondant dans la même cellule, ou la cellule juste à côté...

J'ai essayé plusieurs méthodes qui fonctionnent en m'inspirant des archives de ce forum :
- affichage d'une image en fonction d'un menu déroulant (fonction DECALER)
- utilisation de la fonction SI (Photo=SI(Feuil1!$J$3="N";Feuil1!$B$2;Feuil1!$B$1)
... mais je ne m'en sort pas, je dois définir un nom, donc une formule pour chaque image !

Je pense que c'est possible, par l'intermédiaire d'une macro peut-être (si c'est vraiment nécessaire...) mais là je suis perdue...
Quelqu'un a-t-il une solution à mon problème ? :confused:
Je n'ai peut-être pas été très claire donc vous trouverez ci-joint une présentation simplifiée de mon tableau...

Merci d'avance.
Fanny
 

Pièces jointes

  • Affiche Image suivant Cellule.xls
    44 KB · Affichages: 860

fanny_746

XLDnaute Nouveau
Re : Afficher une image en fonction du contenu de la cellule

Merci Wilfried de m'avoir répondu aussi vite,
Ton lien est riche en info et j'avoue que je me suis un peu perdue dans le fichier MFC... Pourrais-tu m'expliquer plus précisemment de quelle manière tu affiches les images ? Si tu passes par une macro sache que je suis totalement nulle dans ce domaine...
Merci :)
 

wilfried_42

XLDnaute Barbatruc
Re : Afficher une image en fonction du contenu de la cellule

re:

La macro existe et, pour utiliser le fichier exemple tu as du deja la charger en Macro complementaire

Donc elle est deja utilisable par ton classeur, mais les images que je te proposais se trouvent dans des commentaires, si ca te convient comme cela regarde la Feuille MFC_2,
dans la colonne A tu as les valeur à tester
Dans la colonne B le commentaire à mettre
3 lignes sont associées à un fichier Jpg le nom de ce fichier est ente [] au debut du commentaire

on verra la suite si ce style te convient
 

fanny_746

XLDnaute Nouveau
Re : Afficher une image en fonction du contenu de la cellule

Bonjour,
J'ai regardé le fichier plus en détail, je cherche à associer une image à un mot donné de la même façon que la capitale au pays... Donc jusqu'ici tout va bien. Mais, j'ai besoin que l'image s'affiche dans la case, et non son emplacement... Est-ce que c'est possible ?
Merci pour ta patience & désolée de patauger autant :eek: !
 

wilfried_42

XLDnaute Barbatruc
Re : Afficher une image en fonction du contenu de la cellule

e:

ton fichier en retour, la macro est une macro evennementielle sur la saisie des cases

Tu as une feuille images, avec en colonne A les codes, en colonne B le chemin et les noms des pictogrammes associé aux codes

Bonne journée
 

Pièces jointes

  • Affiche Image suivant Cellule.zip
    33.7 KB · Affichages: 1 518

wilfried_42

XLDnaute Barbatruc
Re : Afficher une image en fonction du contenu de la cellule

Salut Spitnolan :)

j'avais deja vu cette page, mais elle m'etait sortie de la tete, en effet c'est autrement plus simple, merci de se rappel, au plaisir de te croiser

Cordialement
 

fanny_746

XLDnaute Nouveau
Re : Afficher une image en fonction du contenu de la cellule

J'étais déjà tombée sur ce fil auparavant, et j'ai essayé d'appliquer "AffichageImageseloncalculviaAppPhoto3.zip" en utilisant la fonction DECALER et l'appareil photo... seulement cette méthode implique de définir des noms d'image "Imagei" où i représente le n° de la ligne qui nous interesse. Or, dans mon cas, j'ai plus de 300 lignes avec 8 photos à faire apparaître par ligne... (ci-joint une partie de mon tableau tel qu'il se présente en réalité).
En bref, si A1="F" alors B1=ImageF ; si C1="C" alors D1=ImageC ...
De la même façon, si A2="F" alors B2=ImageF ; si C2="C" alors D2=ImageC ...
x300
Ca doit être possible avec une macro mais je n'y comprends rien :confused:
J'ai par exemple regardé dans le style le fichier Insert_Image.zip que vous trouverez à ce lien Lien supprimé ; mais le code doit être erroné car ça ne fonctionne pas, mais dans le genre c'est un peu ce qu'il me faudrait je pense...
Ca me casse un petit peu les bonbons (pour être polie) :D donc si quelqu'un pouvait m'aider ça m'enlèverait une bonne épine du pied !!
Merci encore pour vos réponses,
++
Fanny
 

Pièces jointes

  • Tableau_Prod.xls
    24 KB · Affichages: 635

fanny_746

XLDnaute Nouveau
Re : Afficher une image en fonction du contenu de la cellule

J'ai regardé le fichier de 11h38 :
Lorsque j'écris dans la colonne B de l'onglet Images le chemin et le nom des pictogrammes, et que je coche ensuite une case de l'onglet Feuil1 d'un X, un message d'erreur apparait : "Impossible de lire la propriété Insert de la classe Pictures"...
Que dois-je faire exactement ?
Dois-je écrire le chemin et le nom d'une façon particulière ?
J'ai écrit dans la cellule B2 [M:\Donnees\Images\Pictogrammes\Etiquettage produits] "Nenvironnement"? Mais j'ai sans doute fait une erreur...
 

fanny_746

XLDnaute Nouveau
Re : Afficher une image en fonction du contenu de la cellule

J'ai parlé un peu vite...
Une dernière question relative au code de la macro, j'ai besoin d'un cours de programmation :

Je souhaite adapter ton code, qui fonctionne dans le fichier Affiche Image Suivant Cellule, à mon fichier de suivi... Pour cela, j'ai copié l'onglet Images dans mon classeur, et ton code dans Visual Basic ; j'ai ensuite remplacé les cellules "C4:J9" par "I12:R362" mais ça ne fonctionne pas (Impossible de lire la propriété blablabla)...
Quelles sont les autres valeurs du code à adapter en fonction de mon tableau, car pour moi tout ça c'est du charabia...?

Private Sub Worksheet_Change(ByVal Target As Range)
Dim valeur As String, i As Integer
If Not Intersect(Target, Range("C4:J9")) Is Nothing Then
On Error Resume Next
ActiveSheet.Shapes("Image" & Target.Address).Delete
On Error GoTo 0
If UCase(Target) = "X" Then
valeur = Cells(3, Target.Column)
With Sheets("Images")
For i = 1 To 50
If valeur = .Range("A" & i) Then valeur = .Range("B" & i)
Next i
End With
Target.Select
ActiveSheet.Pictures.Insert(valeur).Select ' je cree une image
Selection.ShapeRange.AlternativeText = " "
Selection.Name = "Image" & Target.Address ' J'identifie l'image pour une eventuelle suppression
Selection.Width = Target.Width
Selection.Height = Target.Height
Target.Select
End If
End If
End Sub

Merci ;)
 

wilfried_42

XLDnaute Barbatruc
Re : Afficher une image en fonction du contenu de la cellule

re:

les valeurs etaient en ligne 3, avec la colonne de la cellule de saisie la ligne en rouge, Ta 1ere ligne est la 12, J'imagine que ta ligne de titre est en 11, modifie le 3 en 11
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim valeur As String, i As Integer
If Not Intersect(Target, Range("C4:J9")) Is Nothing Then
On Error Resume Next
ActiveSheet.Shapes("Image" & Target.Address).Delete
On Error GoTo 0
If UCase(Target) = "X" Then
[COLOR="Red"]valeur = Cells(3, Target.Column)[/COLOR]
With Sheets("Images")
For i = 1 To 50
If valeur = .Range("A" & i) Then valeur = .Range("B" & i)
Next i
End With
Target.Select
ActiveSheet.Pictures.Insert(valeur).Select ' je cree une image
Selection.ShapeRange.AlternativeText = " "
Selection.Name = "Image" & Target.Address ' J'identifie l'image pour une eventuelle suppression
Selection.Width = Target.Width
Selection.Height = Target.Height
Target.Select
End If
End If
End Sub
 

Discussions similaires

Réponses
9
Affichages
156

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87