Excel macro enregistre image

Résolu
Bonjour,

J'ai une liste d'adresses d'images hébergées sur internet dans un classeur Excel.
en face de chaque adresse, j'ai un chemin pour télécharger l'image.

Exemple:

http://www.totalreunion.fr/os/mainpicture/NT0002F4EA.jpg => C:\total.jpg
http://www.e-dico.fr/blog/images/tous-les-logos-renault.jpg => C:\renault.jpg
....

Savez vous s'il est possible d'utiliser excel comme un gestionnaire de téléchargement via une macro ?

-telecharge l'image en enregistrant au chemin indiqué et passe à la suivante.

Merci pour votre aide.

2 réponses

  1. Option Explicit

    Private Declare Function URLDownloadToFile Lib "urlmon" Alias _
    "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal _
    szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

    Private Const ERROR_SUCCESS As Long = 0

    Private Sub CommandButton1_Click()
    Dim Cible As String
    Call DownloadFilefromWeb
    End Sub

    Sub DownloadFilefromWeb()

    'la premiere image est en Y3
    Range("Y3").Select

    Dim x As Integer

    'Boucle nombres de pages -1 (cellule I5)
    For x = 1 To 10

    Dim strSavePath As String
    Dim URL As String, ext As String
    Dim buf, ret As Long
    URL = ActiveCell.Value
    buf = Split(URL, ".")
    ext = buf(UBound(buf))

    ActiveCell.Offset(0, 1).Select

    strSavePath = ActiveCell.Value
    ret = URLDownloadToFile(0, URL, strSavePath, 0, 0)

    ActiveCell.Offset(1, -1).Select

    Next x

    End Sub
    0
    1. Contributeur
      bonjour tchernosplif,

      C'est parfait, tu as fait la demande et la réponse !

      Si je peux me permettre, comme je n'aime pas écrire du code inutile, je te suggère de simplifier ainsi ta procédure, avec contrôle du bon déroulement :

      Sub DownloadFilefromWeb()
      Dim x As Integer
      Dim ret As Long
      'la premiere image est en Y3
      With Range("Y3")
      'Boucle nombres de pages -1 (cellule I5)
      For x = 0 To [I5].Value - 1
          ret = URLDownloadToFile(0, .Offset(x, 0).Value, .Offset(x, 1).Value, 0, 0)
          If ret <> 0 Then MsgBox "Fichier erroné " & .Offset(x, 1).Value
      Next x
      End With
      End Sub
      0
      1. Bonjour,

        Merci pour ta réponse, je vais simplifier la procédure comme tu le suggères.

        Je réalise que j'ai oublié d'enlever ce commentaire
        'Boucle nombres de pages -1 (cellule I5)
        ça pourra toujours servir à ceux qui liront ton post ^^

        Je ne vais pas contrôler le bon déroulement et utiliser de MsgBox, car cette macro s'inscrit elle même dans une boucle, mais merci quand même.

        @+
        0