XL 2019 Importer des images depuis un lien ou Google image

metalbarzotti

XLDnaute Nouveau
Bonjour tous le monde,

j'ai un petit souci avec un tableau Excel, en effet j'ai une liste d'équipements électriques avec référence, vu que je suis un peu feignant (c'est ce qui m'a permis d'apprendre) je souhaite importer des images dans une case d'après les références (en gros excel fait la recherche dans un site web ou Google image et m'importe l'image en question)


je vous remercie pour chaque commentaire laisser.


Bonne journée
 

patricktoulon

XLDnaute Barbatruc
Bonjour Robert , @metalbarzotti

un exemple j'importe le logo de exceldownloads dans une feuille et je la place dans une plage de cellules et centrée
possibilité de la redimensionner(ou pas ) à la plage en gardant le ratio
possibilité de marger de 1% à 100%
avec ma fonction magique
deux des trois modes sont en commentaire
VB:
Sub test()
    Dim img As Picture, Url$
    'pour l'exemple on va insérer le logo de exceldownloads
    'url de l'image
    Url = "http://excel-downloads.com/styles/brivium/stylium/strontium/xenforo/logo.png"

    'on importe l'image dans la feuille
    Set img = ActiveSheet.Pictures.Insert(Url)

    'on recupere lesdimensions et position  de l'image par ma fonction magique
    'afin qu'elle soit redimentionnée (ou pas) et centrée dans la plage de cellules en parametres

    'exemple sans redimentionnement
    'd = GetDimPositionShapeCenterRange(ActiveSheet.[D4:I10], img, , True)

    'exemple avec  redimentionnement  au max de la plage et sans marge
    'd = GetDimPositionShapeCenterRange(ActiveSheet.[D4:I10], img)

    'exemple avec  redimentionnement  au max de la plage et avec une marge de 10% (100-10 donc <<90%>>)
    d = GetDimPositionShapeCenterRange(ActiveSheet.[D4:I10], img, 90)

    'on place et dimentionne l'image dans la plage de destination
    With img
        .Left = d(0)
        .Top = d(1)
        .Width = d(2)
        .Height = d(3)
        .ShapeRange.Line.Visible = True    'pour que l'on puisse bien voir sa position dans la plage de cellule
    End With
End Sub


Function GetDimPositionShapeCenterRange(rng As Range, shap, Optional PercentMarge As Long = 100, Optional NoRedim As Boolean = False)    'la marge exprime un pourcentage de 1 à x%
'collection fonctions perso Catégorie [IMAGES] by patricktoulon sur exceldownloads
    Dim Ratio#, Wx#, Hy#, Tp#, LfT#
    Ratio = Application.Min(rng.Width / shap.Width, rng.Height / shap.Height)
    If NoRedimXY Then Ratio = 1: PercentMarge = 100
    Wx = (shap.Width * Ratio) * (PercentMarge / 100)
    Hy = (shap.Height * Ratio) * (PercentMarge / 100)
    Tp = rng.Top + ((rng.Height - Hy) / 2)
    LfT = rng.Left + ((rng.Width - Wx) / 2)
    GetDimPositionShapeCenterRange = Array(LfT, Tp, Wx, Hy)
End Function
 

Pièces jointes

  • exemple import image du web plus placement dans range .xlsm
    20.3 KB · Affichages: 10

metalbarzotti

XLDnaute Nouveau
Bonjour Robert , @metalbarzotti

un exemple j'importe le logo de exceldownloads dans une feuille et je la place dans une plage de cellules et centrée
possibilité de la redimensionner(ou pas ) à la plage en gardant le ratio
possibilité de marger de 1% à 100%
avec ma fonction magique
deux des trois modes sont en commentaire
VB:
Sub test()
    Dim img As Picture, Url$
    'pour l'exemple on va insérer le logo de exceldownloads
    'url de l'image
    Url = "http://excel-downloads.com/styles/brivium/stylium/strontium/xenforo/logo.png"

    'on importe l'image dans la feuille
    Set img = ActiveSheet.Pictures.Insert(Url)

    'on recupere lesdimensions et position  de l'image par ma fonction magique
    'afin qu'elle soit redimentionnée (ou pas) et centrée dans la plage de cellules en parametres

    'exemple sans redimentionnement
    'd = GetDimPositionShapeCenterRange(ActiveSheet.[D4:I10], img, , True)

    'exemple avec  redimentionnement  au max de la plage et sans marge
    'd = GetDimPositionShapeCenterRange(ActiveSheet.[D4:I10], img)

    'exemple avec  redimentionnement  au max de la plage et avec une marge de 10% (100-10 donc <<90%>>)
    d = GetDimPositionShapeCenterRange(ActiveSheet.[D4:I10], img, 90)

    'on place et dimentionne l'image dans la plage de destination
    With img
        .Left = d(0)
        .Top = d(1)
        .Width = d(2)
        .Height = d(3)
        .ShapeRange.Line.Visible = True    'pour que l'on puisse bien voir sa position dans la plage de cellule
    End With
End Sub


Function GetDimPositionShapeCenterRange(rng As Range, shap, Optional PercentMarge As Long = 100, Optional NoRedim As Boolean = False)    'la marge exprime un pourcentage de 1 à x%
'collection fonctions perso Catégorie [IMAGES] by patricktoulon sur exceldownloads
    Dim Ratio#, Wx#, Hy#, Tp#, LfT#
    Ratio = Application.Min(rng.Width / shap.Width, rng.Height / shap.Height)
    If NoRedimXY Then Ratio = 1: PercentMarge = 100
    Wx = (shap.Width * Ratio) * (PercentMarge / 100)
    Hy = (shap.Height * Ratio) * (PercentMarge / 100)
    Tp = rng.Top + ((rng.Height - Hy) / 2)
    LfT = rng.Left + ((rng.Width - Wx) / 2)
    GetDimPositionShapeCenterRange = Array(LfT, Tp, Wx, Hy)
End Function
Bonjour, je te remercie énormément pour l'effort que t'as fournie pour me répondre, néanmoins ma question portée plutôt sur le faite d'importer des image selon la référence mise dans la cellule, je vais simplifier ma requête, j'ai un listing d'équipements Schneider (électrique : contacteur - variateur - bloc vigi ...) et chaque désignation porte une référence exemple : contacteur NFC 2p 3r ... si je tape cette référence (fictive) dans Google j'aurai l'image de l'équipement en question, mais vu qu'il ya une centaine de références j'ai eu la flemme de copier coller chaque référence et de coller l'image a côté de la référence, j'aurai aimé une fonction un truc de données (power bi ou power pivot) bref un truc qui me simplifie la tâche, depuis hier j'aurai pu le faire mais je veux un truc pour le futur.


bonne. soirée
 

Discussions similaires

Réponses
1
Affichages
734

Statistiques des forums

Discussions
315 096
Messages
2 116 184
Membres
112 679
dernier inscrit
Yupanki