Images dynamiques selon adresse référence dans cellule

Bonjour à tous,

Après plusieurs recherches infructueuses, je me permets de me tourner vers le forum.

J'ai pu lire bien des posts sur le sujet "image dynamique", mais rien de probant pour moi à l'instant.

Je crée un base de données pour la gestion d'informations du personnel.

Dans une cellule (BD)Feuil1, j'ai 4 colonnes avec 4 adresses inscrites dans les cellules relatives aux personnes.

Dans une cellule (Formulaire)Feuil2, je souhaite avoir 4 images qui se modifient en relation avec les adresses y référentes en Feuil1.

J'ai un numéro unique pour chaque personne. C'est utilisé comme identifiant.

Dans mon formulaire, j'ai une cellule "Identifiant" que je peux modifier selon mes recherches.

Je souhaiterais que mes photos s'adaptent en fonction de l'identifiant.

Pour les cellules textes, j'arrive à mettre en relation ma BD et mon Formulaire.

Je bloque pour les images.

Y aurait-il une bonne âme qui aurait déjà résolu un problème de ce type ?

Merci pour votre lecture.

Willau

Bonjour,

Y aurait-il une bonne âme qui aurait déjà résolu un problème de ce type ?

Bonjour,

C'est le cas ici : https://forum.excel-pratique.com/viewtopic.php?p=607921#p607921

Mais plutôt que d'appeler une image-QRCode, il faudra appeler une image sur un serveur ou sur le PC.

Normalement, une fonction excel n'agit que sur la cellule appelante.

Ici c'est un peu une extension ou l'exploitation d'une anomalie : la fonction va inscrire quand même ce que l'on veut dans une cellule, mais en même temps afficher l'image.

Cela utilise ce type de fonction,

sauf que l'URL de l'image est plus facile à inscrire dans la macro.

As-tu un bout de fichier anonymisé et quelques images de n'importe quoi pour faire l'essai ?

Voici un exemple (les photos ne sont pas fournies ...

23afficher-image.xlsm (26.21 Ko)

Bonjour Steelson,

Merci pour ton dévouement

J'ai reçu des travaux supplémentaires entre temps. Je lis toutes tes indications au plus vite et te fais un retour.

D'ores et déjà merci et à plus tard.

Willau

Simplification de la macro :

Option Explicit

Function MonImage( _
    ByVal url As String, _
    Optional ByVal ImgWidth As Long = 150, _
    Optional ByVal ImgHeight As Long = 150, _
    Optional ByVal ImgName = "MyImg", _
    Optional ByVal DisplayText As String = ">>>") As Variant

Dim oImg As Shape, oRng As Range

    Set oRng = Application.Caller.Offset(, 1)
    On Error Resume Next
        Set oImg = oRng.Parent.Shapes(ImgName)
        oImg.Delete
    On Error GoTo 0
    Set oImg = oRng.Parent.Shapes.AddPicture(url, True, True, oRng.Left, oRng.Top, ImgHeight, ImgWidth)
    oImg.Name = ImgName
    MonImage = DisplayText

End Function

Magnifique ! Merci, ça s'annonce bien.

Je me permettrais d'essayer tout ça dans quelques heures, voire pendant ce week-end.

Je sais d'ores et déjà que c'est sur la bonne piste.

Il s'agira pour moi d'insérer plusieurs images "dynamiques" en relation à une seule personnes sur le même formulaire lié à ma BD.

Certain que l'envoi d'un fichier exemple (neutre) pourra t'aider plus avant dans la compréhension de mes besoins, je vais travailler sur ce projet et t'en transmettre une copie.

Je reste persuadé que mon projet peut déjà avancer avec tes merveilleuses solutions. Merci.

Cordialement

Willau

La dernière macro permet aussi de gérer plusieurs images sur la même feuille excel.

A ta disposition si besoin ...

Bonjour Steelson

Voilà, je me suis un peu attardé sur tes contributions.

Je constate que j'ai encore d'énormes progrès à faire.

Sur tes bases, tout fonctionne.

Dès que je modifie un peu la mise en page ou ajoute ce dont j'ai besoin, ça bugue (rien d'étonnant je pense).

Je te transmets en pièce jointe mon idée de base.

Ma BD se référence à un numéro de personne unique (U Nr - UserNummer) propre à chaque collaborateur.

Je souhaite dans ma feuille "Formular" pouvoir faire défiler les informations.

Je souhaite par la suite pouvoir faire imprimer - voire imprimer un pdf - chaque personne avec un système de loop…

Je souhaite que le fichier soit assez léger, raison pour laquelle j'implémente les photos en relation avec un share.

Je dois encore trouver le moyen d'avoir un outil qui me permette de chercher un collaborateur par nom prénom ou par U dans le formulaire…

Il pourrait être intéressant de gérer les personnes par le biais d'un formulaire de saisie, mais je vais d'abord me concentrer sur cette tâche simplement par le biais du tableau BD.

Je souhaite ajouter une colonne "Sélection" qui me permettra de mettre une croix dans la colonne y relative et de faire imprimer par "loop" toutes les feuilles sélectionnées. (impression en série).

Bref… pour les images, je vais dans ta direction, mais je dois encore trouver comment

Voilà mon "petit" retour actuel.

Bien à toi.

Willau

Je souhaite dans ma feuille "Formular" pouvoir faire défiler les informations.

Je souhaite par la suite pouvoir faire imprimer - voire imprimer un pdf - chaque personne avec un système de loop…

Je souhaite que le fichier soit assez léger, raison pour laquelle j'implémente les photos en relation avec un share.

Il pourrait être intéressant de gérer les personnes par le biais d'un formulaire de saisie, mais je vais d'abord me concentrer sur cette tâche simplement par le biais du tableau BD.

Pour moi, ton formulaire est déjà fait dans formular

voir ici ... https://www.excel-pratique.com/fr/telechargements/utilitaires/excel-formulaire-no438

Pour les images, comment vois-tu la façon de les afficher ? Lors de la sélection d'une fiche ? ou sur un clic de bouton ?

J'ai vu qu'il y avait 3 images par fiche !

Bonjour Steelson,

Merci pour ton lien, je vais étudier ce formulaire…

S'agissant de l'affichage des images, il s'agirait de les modifier au défilement de chaque fiche.

S'il existe évidemment une option qui permettent de les afficher ou non, c'est un plus (je ne m'étais pas fait de réflexion là-dessus)

Mais prioritairement, il s'agit de faire défiler les images en même temps que les fiches, sans clique particulier.

Bien à toi.

Willau

Attention aux RECHERCHEV

=RECHERCHEV(N13;DB!C8:N22;4;FAUX)

Il faut mettre FAUX ou 0 en dernier paramètre (malheureusement ce dernier est optionnel !)

sinon la recherche s'arrête avant d'atteindre la ligne (si VRAI il faut que la base soit triée)

Voici avec les 3 photos dont on peut régler la dimension

=MonImage( ______adresse_image_______ ; ___hauteur________ ; _____largeur________)

Si pas d'image, il l'indique.

Exemple : décompresse les photos et indique le bon chemin dans le fichier.

5photos.zip (32.50 Ko)

Après, j'ai d'autres remarques sur ta base, mais cela n'a rien à voir avec les photos. Continue de ton côté.

Bonjour Steelson

Me revoilà enfin !!!! sur ce projet. (Navré pour mon absence…)
Cette fois les délais vont être plus courts pour moi :(

J'ai pu découvrir ton code avec grand plaisir !
Je n'arrive pas à imposer les dimensions de mon image malgré une modification des "150" dans ton code.
Je mets en page une nouveau fichier (cosmétique) que je partage très prochainement avec toi.
J'ai plein d'idées, mais hélas des lacunes du point de vue technique. J'espère, si tu veux bien, pouvoir compter sur ton appui.

Ce petit message pour te relancer, voire te signaler que je travaille à nouveau activement sur le projet.
Tu avais par ailleurs une question sur ma base de données ?

Au plaisir de nos futurs échanges.

Cordialement
Willau

Hello, j'avais même oublié que j'avais travaillé là-dessus

Tu peux voir ici quelque chose de plus récent et pour lequel le redimensionnement fonctionne.

https://forum.excel-pratique.com/excel/modifier-une-image-en-fonction-de-la-valeur-d-une-cellule-a-v...

Option Explicit
Const deltaX = 10 ' horizontal
Const deltaY = 20 ' vertical
Const offsetX = 0
Const offsetY = 0

Function AfficherImage( _
    ByVal image As String, _
    Optional ByVal largeur As Long = 100, _
    Optional ByVal hauteur As Long = 150, _
    Optional ByVal texte As String = "") As Variant
Application.Volatile
Dim oImg As Shape, oRng As Range
    Set oRng = Application.Caller.Offset(offsetY, offsetX)
    On Error Resume Next
        Set oImg = oRng.Parent.Shapes(Application.Caller.Address)
        oImg.Delete
    On Error GoTo 0
    If image = "" Then GoTo fin
    On Error GoTo fin
    Set oImg = oRng.Parent.Shapes.AddPicture(ThisWorkbook.Path & "\cartes\" & image & ".jpg", True, True, oRng.Left + deltaX, oRng.Top + deltaY, largeur, hauteur)
    oImg.Name = Application.Caller.Address
    AfficherImage = "ok"
    Exit Function
fin:
    AfficherImage = "pas d'image"
End Function
9jeu-de-cartes.zip (591.47 Ko)
Rechercher des sujets similaires à "images dynamiques adresse reference"