Afficher image selon résultat d'une cellule (déjà lu autres sujets mais arrive pas)

choup67

XLDnaute Occasionnel
Salut à tous,

Je cherche à afficher une image en fonction du résultat d'une formule. J'ai parcouru plein de sujets traitant du problème mais je n'arrive pas à faire fonctionner les solutions trouvées.

Voici un fichier en exemple avec le code que j'ai trouvé sur le forum :
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim objFeuille As Worksheet, objPict As Picture
If Worksheets("Plasma").Range("A1").Value > 97 Then
Set objFeuille = ActiveSheet
Set objPict = objFeuille.Pictures.Insert("d:\all documents\Professional Documents\Organisation Matériel CDS\Ecran plasma\soco-bien.jpg")
With objPict
.Left = Range("B1").Left
.Top = Range("B1").Top
End With
Else
Set objFeuille = ActiveSheet
Set objPict = objFeuille.Pictures.Insert("d:\all documents\Professional Documents\Organisation Matériel CDS\Ecran plasma\soco-pasbien.jpg")
With objPict
.Left = Range("B1").Left
.Top = Range("B1").Top
End With
End If
End Sub

Merci pour votre aide.
 

Pièces jointes

  • imgselonresultat.xlsm
    103.5 KB · Affichages: 94

Hulk

XLDnaute Barbatruc
Re : Afficher image selon résultat d'une cellule (déjà lu autres sujets mais arrive p

Hello choup, Forum,

Voici une macro plus simple...

1) Tu as un cadre sur la feuille nommé "Image1" -> Feuil1.Image1

2) Tu nommes tes images "Image1.jpg" et "Image2.jpg" et tu les places dans un dossier avec le fichier Excel
Note que tu peux les nommer comme tu veux, mais pour l'exemple je les ai nommées "Image1.jpg" et "Image2.jpg" !

3) Tu colles ce code dans la feuille
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

    Dim img1 As String
    Dim img2 As String
    
    If Range("A1").Value > 0.97 Then
        img1 = ThisWorkbook.Path & "\Image1.jpg"'ThisWorkbook.Path est le chemin où se trouve ce fichier Excel
        If Dir(img1) <> "" Then
            Feuil1.Image1.Picture = LoadPicture(img1)
        End If
    Else
        img1 = ThisWorkbook.Path & "\Image2.jpg"
        If Dir(img1) <> "" Then
            Feuil1.Image1.Picture = LoadPicture(img1)
        End If
    End If
    
End Sub
En pièce jointe le dossier avec ton fichier et les images.
 

Pièces jointes

  • imgselonresultat.zip
    208.9 KB · Affichages: 105
  • imgselonresultat.zip
    208.9 KB · Affichages: 108
  • imgselonresultat.zip
    208.9 KB · Affichages: 108
Dernière édition:

choup67

XLDnaute Occasionnel
Re : Afficher image selon résultat d'une cellule (déjà lu autres sujets mais arrive p

Bonjour Hulk,

Merci pour ta réponse mais lorsque je change la valleur de la cellule A1, il ne se passe rien. L'image ne bouge pas.

Je précise que j'ai bien mis les images dans le même dossier.

Merci.
 
Dernière édition:
G

Guest

Guest
Re : Afficher image selon résultat d'une cellule (déjà lu autres sujets mais arrive p

Bonjour choup67
Hello Hulk:):):)

Depuis excel 2007, les objects Pictures ne sont plus gérés efficacement même s'ils sont conservés pour la compatibilité avec les versions antérieurs, au profit des objets Shapes.

Dans le fichier joint, sur la base de travail de Hulk, l'image est donc contenue dans un objet Shape et modifier par la méthode .Fill.UserPicture

J'ai limité l'évènement change à la cellule A1

A+
 

Fo_rum

XLDnaute Accro
Re : Afficher image selon résultat d'une cellule (déjà lu autres sujets mais arrive p

Bonsoir,

les images étant sur la feuille et cachées, peut-être ainsi ? (testé avec 2010 donc devrait passer avec 2007).
 

Pièces jointes

  • AfficherImage.xls
    112.5 KB · Affichages: 137

choup67

XLDnaute Occasionnel
Re : Afficher image selon résultat d'une cellule (déjà lu autres sujets mais arrive p

Bonjour à tous,

Lorsque je modifie à la main la valeur de la cellule cela fonctionne. Mais comme dans A1 il y a une formule, si la valeur de cette cellule change, il ne se passe rien. Comment remédier au problème?

J'aimerai également afficher les mêmes images en fonction de la valeur de la cellule A2,quelle ligne de code faut-il ajouter?

Merci.
 
Dernière édition:

Gruick

XLDnaute Accro
Re : Afficher image selon résultat d'une cellule (déjà lu autres sujets mais arrive p

Bonjour Choup, Hasco, Fo_rum, Hulk...

Alsacienne ?

Dans le petit fichier joint et issu du tien, cela fonctionne (XL2004 Mac) s'il y a une formule en A1.
Tu remplaceras les : par des \ dans la macro événementielle.

Gruick
 

Pièces jointes

  • imgselonresultat.zip
    68.2 KB · Affichages: 71
  • imgselonresultat.zip
    68.2 KB · Affichages: 72
  • imgselonresultat.zip
    68.2 KB · Affichages: 74
Dernière édition:

choup67

XLDnaute Occasionnel
Re : Afficher image selon résultat d'une cellule (déjà lu autres sujets mais arrive p

Merci pour ton aide.

J'ai un problème sur la ligne de code suivante :
Code:
ActiveSheet.Pictures.Insert(a).Select

J'ai bien mis des \ à la place des :
 
G

Guest

Guest
Re : Afficher image selon résultat d'une cellule (déjà lu autres sujets mais arrive p

Re,

comme dis plus haut, la classe Pictures de WorkSheet étant devenue obsolète avec xl2007 et supérieure, elle ne fonctionne plus correctement.

code modifié pour pendre en compte les cellules A1:A2
Code:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    Dim imgFile As String
    If Target.Count > 1 Or Intersect(Target, Range("A1:A2")) Is Nothing Then Exit Sub
    imgFile = ThisWorkbook.Path & IIf(Target < 0.97, "\Image1.jpg", "\Image2.jpg")
    If Dir(imgFile) <> "" Then Me.Shapes("Rectangle 4").Fill.UserPicture (imgFile)
End Sub

Si tes cellules sont au format % il faut taper 97 et non 0.97 pour 97%

A+
 

choup67

XLDnaute Occasionnel
Re : Afficher image selon résultat d'une cellule (déjà lu autres sujets mais arrive p

Merci Hasco...

Je patauge vraiment au sujet des macros.

En fait, quand je parlais d'une autre cellule, je me suis mal exprimée. J'ai un calcul en A1 et doit afficher une image en fonction du résultat dans B1.

J'ai un autre calcul en A2 et je souhaiterai afficher une image dans B2 en fonction du résultat également.
 
G

Guest

Guest
Re : Afficher image selon résultat d'une cellule (déjà lu autres sujets mais arrive p

Bonjour,

D'après ce que je crois comprendre:
il faut déplacer le chargement des images dans l'évènement Sheet_Calculate:

Code:
Private Sub Worksheet_Calculate()
    Dim imgFile As String
    imgFile = ThisWorkbook.Path & IIf(Range("A1") < 0.97, "\Image1.jpg", "\Image2.jpg")
    If Dir(imgFile) <> "" Then Me.Shapes("Rectangle 4").Fill.UserPicture (imgFile)
    imgFile = ThisWorkbook.Path & IIf(Range("A2") < 0.97, "\Image1.jpg", "\Image2.jpg")
    If Dir(imgFile) <> "" Then Me.Shapes("Rectangle 4").Fill.UserPicture (imgFile)
End Sub

Sans plus d'explications claires et précises avec un fichier correspondant exactement au besoin, c'est ma dernière intervention.

A+
 

YANN-56

XLDnaute Barbatruc
Re : Afficher image selon résultat d'une cellule (déjà lu autres sujets mais arrive p

Bonjour choup67, aux participants et à ceux qui passeront par là,

Tiens-tu à ce que cette image soit enregistrée dans ta feuille, ou s'agit-il d'une visualisation ponctuelle?

Dans ce dernier cas; l'utilisation d'un Userform serait bien plus facile et confortable.

Quant à l'application sur une Feuille;
je me déclare incompétent ainsi que mes derniers dialogues à ce sujet le démontrent!

Amicalement, et disponible si tu optes pour l'USF éphémère.

Yann
 

Discussions similaires

Statistiques des forums

Discussions
312 322
Messages
2 087 275
Membres
103 506
dernier inscrit
L_APPRENANT