Mettre une image (issue d'un dossier) dans Excel selon valeur cellule

Bonjour,

Je vous sollicite à nouveau sur un problème. J'ai un fichier excel (ci-joint).

46image.xlsm (15.10 Ko)

J'aimerais pouvoir afficher des images (se trouvant dans un même dossier sur mon ordinateur) selon le contenu des cellules. Autrement dit, lorsque la valeur de la cellule correspond au nom de mon image, l'image s'affiche et que l'opération se répète sur mon fichier. J'ai essayé plusieurs codes issus d'internet (YouTube) mais aucun ne fonctionne.

Merci à vous,

Ludo.

Bonjour Ludosm,

En retour ton fichier modifié pour ton besoin.

Voir notes en rouge sur la feuille.

242imageludo.xlsm (19.10 Ko)

Merci pour ta contribution!

Mes images ne s'affichent malheureusement pas..

De plus, est-il d'avoir le détail commenté du code que tu as produit ? J'ai du mal notamment à comprendre la procédure de début avec le target.row et le target.offset

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cel As String
If Target.Row = 1 Then Exit Sub
If Target.Offset(-1, 0).Interior.Color = RGB(242, 242, 242) And Target.Offset(-1, 0) > "" Then
chemin = Range("B1"): Img = Target.Offset(-1, 0).Text
Cel = Target.Offset(-1, -1).Address
With ActiveSheet.Range(Cel)
    L = .MergeArea.Height
    H = .MergeArea.Width
End With
ActiveSheet.Pictures.Insert(chemin & Img).Name = Img
With ActiveSheet.Shapes(Img)
.Left = Range(Cel).Left
.LockAspectRatio = msoFalse
.Height = L
.Width = H
End With
End If
End Sub

A nouveau,

Le dossier de tes images est bien celui renseigné dans la cellule B1?

Tes images sont bien nommées avec l'extension? apparemment .jpg

Une précision, le nom de l'image doit être unique.

Et après avoir appuyée sur la touche Entrée. Le curseur va sur la cellule sous celle de l'image.

Donc si nom d'image en C5, le curseur se trouvera en C6

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Cel As String
If Target.Row = 1 Then Exit Sub 'Ecarte la 1ière ligne qui est celle réservée (en B1) au chemin du dossier 
'Vérifie que le nom de l'image est inscrite dans la cellule bleutée et que cette cellule ne soit pas vide
If Target.Offset(-1, 0).Interior.Color = RGB(242, 242, 242) And Target.Offset(-1, 0) > "" Then
'Alors attribue le chemin inscrit en cellule B1 ainsi que le nom de l'image dans la variable Img
chemin = Range("B1"): Img = Target.Offset(-1, 0).Text
'Attribue la position ou l'image doit s'afficher
Cel = Target.Offset(-1, -1).Address
'Ainsi que ses valeurs de la cellule fusionnée Hauteur + largeur
With ActiveSheet.Range(Cel)
    L = .MergeArea.Height
    H = .MergeArea.Width
End With
'Insertion de l'image et nommage de cette dernière dans la feuille active
ActiveSheet.Pictures.Insert(chemin & Img).Name = Img
'Positionne l'image et modifie sa hauteur et largeur afin de correspondre aux cellules fusionnées. 
With ActiveSheet.Shapes(Img)
.Left = Range(Cel).Left
.LockAspectRatio = msoFalse
.Height = L
.Width = H
End With
End If
End Sub

Merci pour ta réponse, je comprends mieux le principe de ton code.

J'ai vérifié le chemin d'accès en "B1" et il s'agit effectivement du bon chemin (petite précision je suis sous Mac, je sais pas si ça peut jouer)

J'ai l'erreur suivante :

erreurimage

J'ai également remarqué que les images se superposaient. Est-il possible que chaque fois que l'on affiche une image l'ancienne se supprime ?

Suite,

Le message Nous ne pouvons pas provient qu'il ne trouve pas l'image dans le chemin que tu indiques.

Vérifier le nom exact de l'image.

Pour ce qui est de supprimer une image déjà présente quand tu ajoutes un nom d'image dans une cellule bleutée.

Alors il suffit d'ajouter cette 1ière ligne de code avec condition IF avant l'ActiveSheet.Pictures...

If Range(Cel) > "" and Range(Cel) <> Img Then ActiveSheet.Shapes(Range(Cel)).Delete
ActiveSheet.Pictures.Insert(chemin & Img).Name = Img

Et cette 2ième ligne de code avant le End if en fin de macro

Range(Cel) = Img
End If

Notes que les cellules fusionnées ne doivent contenir de texte (Image1, Image2, etc...) si aucune image associée.

Un grand merci, mon problème est résolu grâce à ton aide !

Rechercher des sujets similaires à "mettre image issue dossier valeur"