Importer des images d'un site fournisseur
Bonjour à tous.
J'aide un ami qui a une entreprise et qui utilise les images des catalogues de ses fournisseurs, avec leurs autorisations, pour faire ses devis. Un de ces fournisseurs nous a envoyé un API pour la récupération des images, mais l'utilisation demande trop de développement pour du "one shoot", d'où ma question sur VBA.
Je sèche sur une opération à effectuer... Voilà le problème :
J'ai une liste de nom d'images, qui se trouvent dans un répertoire d'un site Web.
Dans excel, j'ai créé une macro qui me transforme cette liste en lien cliquables. Ça, ça fonctionne.
J'ai crée une autre macro qui se positionne sur la première ligne, active le lien, puis passe à la ligne suivante, etc, etc... En boucle jusqu'à la fin de la liste
Mon problème, c'est qu'à chaque ligne lue, le navigateur s'ouvre (ça, pas grave), et que la fenêtre "enregistrer sous" s'ouvre également et attend que je clique sur "enregistrer" ou que j'appuie sur "entrée" pour que la macro continue.
C'est là que je coince. Comment rendre cette action automatique. J'ai essayé le sendkey, mais sans effet....
Pour info, j'ai 4000 images à récupérer 😱
Merci de votre aide.
Ah oui, j'avais zappé...
La macro (simple, essais sur 5 lignes)
Les lignes sendkeys sont en commentaire car ne fonctionnent pas :
Sub Macro1()
'
' Macro1 Macro
'
ligne = 1
Do Until ligne = 6
Range(Rows(ligne), Columns(1)).Select
Selection.Hyperlinks(ligne).Follow NewWindow:=False, AddHistory:=True
' AppActivate(ProcID)
' SendKeys "~", True
ligne = ligne + 1
Loop
End Sub
et ma liste (verticale, placée en A1):
https://le_site_web/images/nom_du_fichier_1.png
https://le_site_web/images/nom_du_fichier_2.png.....https://le_site_web/images/nom_du_fichier_n.png
Bonjour Jlm80110 et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum et notamment :
- Ne demandez rien d'illégal ou d'éthiquement discutable (comme par exemple le retrait d'un mot de passe VBA, l'extraction de données d'un site qui ne l'autorise pas, etc).
Cordialement
Re,
Voici un code à essayer, il faudra changer le chemin des images importées "sCheminImg"
Option Explicit
#If VBA7 Then
Private Declare PtrSafe 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
#Else
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
#End If
Public Const sCheminImg As String = "P:\Test\"
Sub LancerImport()
Dim dLig As Long, Lig As Long, lRetVal As Long
Dim sNomImg As String, sPathFic As String, sURL As String
Dim Sht As Worksheet
' Définir la feuille de travail
Set Sht = ThisWorkbook.Sheets("NomFeuille")
' Dernière ligne remplie de la feuille
dLig = Sht.Range("A" & Rows.Count).End(xlUp).Row
' Pour chaque ligne
For Lig = 1 To dLig
' Chemin initial de l'image = https://le_site_web/images/nom_du_fichier_1.png
sURL = Sht.Range("A" & Lig).Value
' Nom de l'image dans le chemin : https://le_site_web/images/nom_du_fichier_1.png
sNomImg = Mid(sURL, InStrRev(sURL, "/") + 1)
' Chemin de destination complet
sPathFic = sCheminImg & sNomImg
lRetVal = URLDownloadToFile(0, sURL, sPathFic, 0, 0)
' On peut inscrire un texte si erreur
If lRetVal <> 0 Then
Sht.Range("B" & Lig).Value = "Problème téléchargement"
End If
Next Lig
End SubA+
Merci, le code fonctionne.
J'ai mis du temps à le décortiquer pour comprendre ce qu'il s'y passait, mais la méthode va me servir. Je n'avais jamais utilisé "URLDownloadToFile", et la recherche de cette fonction m'a vite fait comprendre que j'ai plein d'autres fonctions à apprendre.
Donc, sujet résolu.
Merci encore.