VBA - Générer des images

Bonjour,

J'ai un tableau Excel de base de données.

Sur une première feuille de base DATA ( 653 lignes incrémentales), qui référence des produits (colonne A) du type: XX0123 et pour chaque référence, j'ai associé un lien d'image (colonne L) tels que : X:\OUTILS COMMUN\LEAN\Images\ACIER NOIR.

Sur une seconde feuille, j'ai mis en forme une affiche sur laquelle, on retrouve pleins d'informations diverses basé aussi sur les références.

MA QUESTION est la suivante, j'ai des cellules sur mon affiche dédié à l'image et je souhaiterais rendre automatique à l'aide d'un bouton et d'une macro l'apparition de l'image dans ces cases.

Je précise, parfois certaines de mes références on le même lien d'image. (ce qui veut donc dire que mes référence non aucun lien avec le nom de l'image).

Ne sachant pas écrire le VBA, mais le lire assez brièvement, pourriez-vous m'écrire ce codage et me l'expliquez ?

Merci par avance à la personne qui prendra le temps de me répondre.

Je reste entièrement disponible pour plus d'informations si mon explication n'est pas claire. (je peux même faire passer ce document).

Bonjour,

Une solution ... pas très simple ! mais c'est celle que j'utilise

Option Explicit

Option Explicit

Function afficherImage( _
    ByVal url As String, _
    Optional ByVal ImgWidth As Long = 150, _
    Optional ByVal ImgHeight As Long = 150) As Variant

Dim oImg As Shape, oRng As Range
    Set oRng = Application.Caller.Offset(0, 1)
    On Error Resume Next
        Set oImg = oRng.Parent.Shapes(Application.Caller.Address)
        oImg.Delete
    On Error GoTo 0
    On Error GoTo fin
    Set oImg = oRng.Parent.Shapes.AddPicture(url, True, True, oRng.Left, oRng.Top, ImgHeight, ImgWidth)
    oImg.Name = Application.Caller.Address
    afficherImage = ""
    Exit Function
fin:
    afficherImage = "pas d'image"
End Function

que tu appelles dans une cellule par

=afficherImage("C:_______")

Pas de bouton, la macro se déclenche car il s'agit d'un appel de fonction personnalisée

L'image se positionnera sur la cellule juste à droite de cette fonction

Tu peux aussi spécifier la largeur et la hauteur de l'image

=afficherImage("C:_______";120;80)

Bonjour,

Merci de votre réponse, cela marche presque à un détail près, c'est que je suis obligé de sélectionner la case et non de la choisir par une fonction de recherche. Auriez-vous une solution ?

Je vous ai joints le tableau ci-dessous.

Merci d'avance et bonne journée.

REF n'est pas défini, pour le reste je peux corriger, mais pas REF

image

Pourquoi des doubles \\ ?

X:\\OUTILS COMMUN\\LEAN\\Images\\ACIER NOIR

Avec une image de mon micro pour contourner les #REF! de ton fichier, et juste un changement sur la macro

Set oRng = Application.Caller
Function afficherImage( _
    ByVal url As String, _
    Optional ByVal ImgWidth As Long = 150, _
    Optional ByVal ImgHeight As Long = 150) As Variant

Dim oImg As Shape, oRng As Range
    Set oRng = Application.Caller
    On Error Resume Next
        Set oImg = oRng.Parent.Shapes(Application.Caller.Address)
        oImg.Delete
    On Error GoTo 0
    On Error GoTo fin
    Set oImg = oRng.Parent.Shapes.AddPicture(url, True, True, oRng.Left, oRng.Top, ImgHeight, ImgWidth)
    oImg.Name = Application.Caller.Address
    afficherImage = ""
    Exit Function
fin:
    afficherImage = "pas d'image"
End Function

cela fonctionne très bien (pas besoin non plus de valider en matriciel)

capture d ecran 482

Maintenant, si tu veux la choisir dans une liste déroulante ....

  1. tu sélectionnes d'abord l'endroit,
  2. ensuite tu lances cette macro
Sub NouvelleImage()
    Dim Fichier As Variant
    Fichier = Application.GetOpenFilename( _
        FileFilter:="Picture,*.JPG,Picture,*.JPEG,Picture,*.GIF,Picture,*.BMP", _
        Title:="Sélectionnez une image à sauvegarder")
    If Fichier = False Then Exit Sub
    ActiveSheet.Pictures.Insert(Fichier).Select
End Sub

Merci beaucoup, tout fonctionne désormais.

Les doubles antislash sont pour rentrer dans les fichiers normalement ( codage HTML)

Parfait !

N'oublie pas de clore ce fil de discussion en cliquant sur

Oui, je viens de le faire sur l'ensemble de tes messages est-ce tout bon ?

Je vais ouvrir un nouveau sujet sur : générer un pdf grâce à une macro en nommant ce dernier et le datant.

Serais tu faire ?

OUI

mais poste la question, cela servira aussi à d'autres

Rechercher des sujets similaires à "vba generer images"