Macro pour insertion automatisée d'une image à partir url

Bonjour,

je suis néophyte en macro et je me tourne vers vous afin d'avoir une solution à mon problème.

J'ai une feuille excel qui comporte dans une colonne des références d'url https pointant vers une image sur divers site.

Je désire avoir une macro qui rapatrie et affiche ces images dans la colonne d’à coté dans un format jpeg style 200*200.

est ce faisable ?

Merci de votre attention

Cordialement

re bonjour

j'ai trouvé un post qui en parle

https://forum.excel-pratique.com/viewtopic.php?f=2&t=92679

mais la macro ne fonctionne pas car mon lien est une url qui pointe sur une donnée public et non un fichier déclaré à l'avance type jgp bmp etc

mon url est du genre

https://site/image/public

j'ai donc une colonne remplie de ces url et je cherche comment faire une macro qui à partir de ce lien récupère l'image sur la page web la redimensionne et l'insère dans la colonne à coté sur la feuille excel.

Déjà pensez vous que c'est faisable ? Si oui pouvez vous m'aider car à partir de l'autre macro ....

Cordialement

Bonjour,

Une simple question (j'espère que cela ne sera pas mal interprété) :

En faisant ça si tu ne cite pas de sources ou si tu montre le fichier a quelqu'un d'autre que toi même tu fait obstacle a la propriété de l'image nah? ^^

Sinon avec un fichier joint ça serait mieux pour travailler s'il te plait? Je regarde ça ce soir

Bonjour et merci de ta réponse

Il s'agit d'un cadre professionnel et je ne ferai pas obstacle à la propriété de l'image. Il s'agit de lien ouvert au public. n'aie aucune crainte, je n'interprète pas mal ta question et la trouve même légitime au regard de ma demande.

Cordialement

Bonjour à tous,

Voici un exemple simple :

* L'adresse de l'image (ici l'avatar de mon blog) est en colonne B

* un clic sur le bouton importe le jpg dans un sous-répertoire (créé si besoin), et affiche le jpg en colonne C

Il suffit d'ajouter des url valides (et des n° en colonne A) pour importer d'autres jpg

Dans cet exemple les images s'affichent aux dimensions des cellules de la colonne C

Nb : je me suis inspiré de la méthode d'arkham46 pour l'import Jpg en binaire

Pierre

1'271import-image.xlsm (21.74 Ko)

Ho ho grand merci pour ta macro elle fonctionne bien !

J'ai modifié le nom de l'image avec l'itération i car j'avais des url dont la chaine fournit empêchait le système la création du fichier.

Pour cette macro attention si on l'intègre dans plusieurs feuilles du même répertoire, l'image existant il ne recharge pas l'image donc affiche celle déjà présente. A voir si on peut mettre le nom du fichier excel en cours avec la colonne et la ligne de l url ?

Enfin , il faut au préalable avoir mis les lignes à la bonne hauteur et longueur car il colle l'image à la dimension de la cellule apparemment. A ton avis, serais t il possible d'intégrer une évolution du style si le buffer n'est pas vide intégré une image de taille 100*100 qui redimensionne la cellule automatiquement ?

En tout cas déjà un gros merci pour ce travail !

bien cordialement

Ok Fragorn

Si j'ai bien compris la demande :

* Pour re-télécharger systématiquement l'image, il suffit d'écrire Ok = DownloadJPG(Url, NDF)

* Pour redimensionner la hauteur de la ligne en fonction de l'image, il suffit de modifier comme suit :

Sub Import_Img()
Dim rep As String, Url As String, NDF As String
Dim Ok As Integer, lig As Long, i As Long
Dim Img As Object

    rep = ThisWorkbook.Path & "\Img\"
    If Not Exist_Rep(rep) Then MkDir rep
    With ActiveSheet
        lig = .Range("A" & Rows.Count).End(xlUp).Row
        For i = 2 To lig
            Url = ActiveSheet.Range("B" & i).Value
            NDF = rep & Right(Url, InStr(1, StrReverse(Url), "/") - 1)
            'If Not Exist_Fichier(NDF) Then Ok = DownloadJPG(Url, NDF)
            Ok = DownloadJPG(Url, NDF)
            If Ok = 0 Then
                Set Img = CreateObject("WIA.ImageFile")
                Img.LoadFile (NDF)
                .Rows(i).RowHeight = Img.Height
                With .Range("C" & i)
                    ActiveSheet.Shapes.AddPicture NDF, True, True, .Left, .Top, Img.Width, Img.Height
                End With
            End If
        Next i
    End With
    Set Img = Nothing
End Sub

Bon week-end

Pierre

Superbe !

ca marche merci bien.

J'ai du mal à comprendre la synthaxe du NDF. si j'ai bien compris sur la ligne :

NDF = rep & Right(Url, InStr(1, StrReverse(Url), "/") - 1)

tu déclares le nom du fichier crée pour importer l'image en lien c'est ca ? et tu lui précises que le nom de fichier sera la chaine de caractère des nombre de caractère derrière le dernier / -1 ?

Si je voulais donner le nom au fichier image de type : Nom_du_fichier_excel_en_cours_ColonneLigne_Horodatage je devrais écrire comme la ligne NDF ?

Encore merci pour ta dispo et ton travail !

Bon week end également

La ligne NDF = rep & Right(Url, InStr(1, StrReverse(Url), "/") - 1) récupère le nom du jpg de l'url pour nommer l'image importée.

On peut tout à fait nommer l'image comme on veut => NDF=rep & "commeonveut.jpg" par exemple à la place

Pierre

j'ai un léger souci avec la seconde macro, elle plante lors de l'insertion d'un fichier image non lisible alors que la premiere macro me mettait tout simplement dans la case "fichier image non lisible".

le message d'erreur est "erreur d'execution '-2147024809 (80070057)': paramètre incorrect"

Il s'agit d'un lien mort parmi les lignes mais la première macro ne s'arrêtait pas dessus.

Merci pour le nom de fichier de NDF et si je voulais mettre un nom avec une partie fixe et de la boucle i ca donnerai :

NDFNDF=rep & "commeonveut_colonne_B_ligne" & i ?

encore merci de ton aide

Edit

j'ai testé quelques trucs et A priori ( car je suis néophyte) c'est la ligne Img.LoadFile (NDF) qui fait tout planter quand elle ouvre le fichier image non lisible alors que la premiere macro passait l'erreur. remédiable ?

Merci de votre attention

Rechercher des sujets similaires à "macro insertion automatisee image partir url"