Image conditionnelle

moustic54

XLDnaute Occasionnel
Bonsoir à tous

Le problème qui m'amène ce soir est le suivant :

Je voudrais pouvoir afficher une image en fonction d'un résultat obtenu selon certaines conditions.

Mon fichier est composé de 2 feuilles.

- La 1ere feuille comprend un tableau (données saisies à l'aide d'un USF)
dans lequel figure le lien des différentes images associées à chaque ligne créée (ex en K2: c:\test\dogallemand.jpg)

- La 2eme feuille reprend ces données, sous condition, de type
SI(C5=0;M4;INDEX(TAB!K2:K5961;C5))

et j'obtiens dans la cellule dans laquelle cette formule est inscrite :
c:\test\dogallemand.jpg


Je voudrais à la place de ce lien voir la photo apparaître dans ma 2eme feuille.

J'ai déjà fait plusieurs essais :
* donner un nom de champ à ma formule de calcul
* insérer une image et indiquant dans la barre de formule faire référence au nom de champ

Mais sans succès, la seule chose que j'obtiens c'est en lieu et place de la "zone" image la reprise de C:\test\dogallemand.jpg et non l'image elle-même. :(:(

Quelqu'un aurait-il des idées pour pouvoir enfin visualiser ces fameuses images (présentes dans le répertoire dans lequel figure le fichier excel) et non leur emplacement ? :confused:
 

moustic54

XLDnaute Occasionnel
Re : Image conditionnelle

Bonjour Sabinoux, wilfried_42


Merci à tous les deux pour vos liens respectifs mais j'avais déjà été faire un tour sur le site de Boisgontier. C'est vrai que son site est une véritable mine d'or pour les amateurs comme moi.

C'est pourquoi j'ai essayé de procéder comme suit :

Feuille 1 : Dans mon tableau j'ai cette adresse pour l'image c:\test\dogallemand.jpg

Feuille 2 : Les images répondant à 1 condition à savoir la formule suivante :SI(C5=0;M4;INDEX(TAB!K2:K5961;C5))

J'ai donné un nom de champ à ma formule de calcul

et inséré une zone image en indiquant dans la barre de formule faire référence au nom de champ
Mais je n'obtiens dans cette "zone" image que le chemin où se trouve l'image (ex: C:\test\dogallemand.jpg) qui lui change bien et non la visualisation de l'image elle-même.

:confused::confused:

Je ne sais pas où j'ai homis quelque chose mais je vais continuer à chercher.
 
Dernière édition:

wilfried_42

XLDnaute Barbatruc
Re : Image conditionnelle

re:, bonjour à tous

si tu avais regardé le lien que je t'ai donné, ta formule deviendrait : si j'ai tout compris
Code:
=image(SI(C5=0;M4;INDEX(TAB!K2:K5961;C5)))
ou encore :
Code:
=SI(C5=0;M4;image(INDEX(TAB!K2:K5961;C5)))
 

moustic54

XLDnaute Occasionnel
Re : Image conditionnelle

Bonjour à tous

Je n'ai pas le fichier sur mon micro mais j'ai pu reprendre un fichier présent sur le forum dans lequel j'ai repris ce que j'avais fait.

wilfried_42, j'ai essayé de remplacer ma formule par celle que tu as indiqué mais j'ai un beau message d'erreur.

J'avais rempalcé la formule par un nom de champ appelé VARIABLE puis j'ai mis IMAGE = VARIABLE dans le champ formule.

Je vous mets le fichier dans lequel j'ai essayé de retranscrire mon problème d'affichage d'images alors que celles-ci se trouvent dans le même répertoire que le fichier Excel.
 

Pièces jointes

  • contacts IMAGES.zip
    30.4 KB · Affichages: 73
Dernière édition:

Sabinoux

XLDnaute Junior
Re : Image conditionnelle

Bonjour Moustic54, wilfried_42, kjin


J'ai regardé le fichier que tu as mis. A ta place j'aurai inscrit
VARIABLE = SI(C5=0;M4;INDEX(TAB!K2:K5961;C5))
et non comme tu l'as fait VARIABLE fait réf. à une cellule que reprend le chemin de ton image.

Quant au reste, je suis loin d'être douée en VBA (Wilfried m'a beaucoup aidée, une chance qu'il ait été là )

Je vais essayer de comprendre le code que t'a indiqué Wilfried et reviens sur ce fil.

En attendant, bon courage
 

wilfried_42

XLDnaute Barbatruc
Re : Image conditionnelle

re:

bonjour sabinoux

dans le fichier que tu as envoyé, il n'y a pas le code qui se trouve dans le fil que je t'ai fourni, sans ce code, la fonction image n'existe pas et tu vas avoir une erreur : #NOM
à intégrer dans un module
Code:
Option Explicit
' Ecrite le 16/09/2008 par Wilfried_42
Function Image(img_nom As Variant, Optional chemin As String = "") As String
    ' Declaration des variables
    Dim ref As Range, sh As Shape, drap As Boolean
    ' ref : la cellule qui provoque la fonction
    ' sh : les shapes
    ' Drap : drapeau definissant si la shape est trouvée
    Application.Volatile ' defini une fonction qui se recalcule automatiquement
' teste le type de variable soit une cellule soit une valeur alphanumerique
    Select Case TypeName(img_nom)
        Case "Range" ' c'est une reference cellule
            Image = img_nom.Value
        Case "String" ' c'est une valeur alphanumerique
            Image = img_nom
        Case Else ' c'est une erreur
            Image = "#ERROR"
            Exit Function
    End Select
' le chemin est un parametre optionnel, s'il est omis, la valeur est le chemin du classeur
    If chemin = "" Then chemin = ThisWorkbook.Path
' le chemin ne se termine pas forcemment par \ je le rajoute
    If Right(chemin, 1) <> "\" Then chemin = chemin & "\"
    Set ref = Application.Caller ' affectaction à ref de la cellule qui lance la fonction
    If ref.MergeCells = True Then Set ref = Range(ref.MergeArea.Address)
    drap = False ' initialisation du drapeau
    For Each sh In ref.Worksheet.Shapes ' je passe en revue toute les shapes
' je teste son nom construite plus bas pour savoir si c'est la bonne shappe
        If "Img-" & ref.Address = Left(sh.Name, Len(ref.Address) + 4) Then drap = True: Exit For
    Next
    If drap = True Then ' c'est la bonne shape
' je teste maintenant si c'est la meme que celle de la formule pour ne pas refaire le traitement
' Le gain de temps n'est pas negligeable
       If "Img-" & ref.Address & "-" & Image = sh.Name Then GoTo fin ' egalité parfaite, je sors
    End If
    On Error Resume Next ' controle d'erreur, si la shape n'existe pas encore, l'instruction suivante provoque une erreur
    sh.Delete ' je detruits la shap
    If Image = "" Then Exit Function ' la valeur est à "" alors pas de shape à affecter
' j'inserre la shape, avec l'image en lui mettant les tailles necessaires pour la cellule
    Set sh = ref.Worksheet.Shapes.AddPicture(chemin & Image, True, True, ref.Left, ref.Top, ref.Width, ref.Height)
    sh.Name = "Img-" & ref.Address & "-" & Image ' je definis son nom pour la trouver plus tard
fin:
    Image = "Img" & ref.Address ' j'affecte un nom pour resultat
End Function
 

moustic54

XLDnaute Occasionnel
Re : Image conditionnelle

re:

bonjour sabinoux

dans le fichier que tu as envoyé, il n'y a pas le code qui se trouve dans le fil que je t'ai fourni, sans ce code, la fonction image n'existe pas et tu vas avoir une erreur : #NOM
à intégrer dans un module

Bonjour à tous

Si wilfried, j'ai essayé avec ton code copié dans un module mais voilà ce que cela donne : aucune photo mais un #réf.
Pour tout te dire j'ai copié bêtement sans vraiment comprendre ce que je faisais :(
 

Pièces jointes

  • contacts IMAGES 2.zip
    31.5 KB · Affichages: 45

wilfried_42

XLDnaute Barbatruc
Re : Image conditionnelle

re:

ok j'ai vu, tu as un objet qui s'appelle image deja alors il cherche l'objet plutot que la fonction

Tu vas modifier la premiere ligne de la fonction :
Function Aff_Image(..................................................
et comme formule au lieu de image tu mets Aff_Image
 

Sabinoux

XLDnaute Junior
Re : Image conditionnelle

Bonjour Wilfried, Moustic, Kjin

Moustic si tu réussis à obtenir un résultat surtout fais m'en part.
J'ai essayé la méthode mais sans plus de succés que toi.
:confused:

J'ai été obligée de modifier en plus de la premiere ligne de la fonction :
Function Aff_Image(..............................
les différentes lignes reprenant Image dans le code module.

Message Erreur de variable. :(

Je vais suivre avec beaucoup d'attention ce fil. ;)
 

moustic54

XLDnaute Occasionnel
Re : Image conditionnelle

Bonsoir à tous

Non je te rassure Sabinoux, je n'ai pas fait mieux que toi.
Moi aussi j'ai modifié le code et même j'ai essayé avec deux formules différentes comme nom de champ.

je te mets le fichier si tu veux regarder ce que j'ai fait.

Mais toujours pas d'apparition d'images :confused::confused:

Je vais aller à Lourdes :eek: à moins que Wilfried est un produit spécial pour faire apparaître mes photos.
 

Pièces jointes

  • AFF IMAGES 2 (version 1).zip
    34.5 KB · Affichages: 43

Statistiques des forums

Discussions
314 485
Messages
2 110 093
Membres
110 659
dernier inscrit
milckush