Excel macro enregistre image

Résolu
tchernosplif Messages postés 714 Statut Membre -  
tchernosplif Messages postés 714 Statut Membre -
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. tchernosplif Messages postés 714 Statut Membre 249
     
    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
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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. tchernosplif Messages postés 714 Statut Membre 249
       
      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