Importer des fichiers images depuis une URL

Bonjour a toutes et tous !

je reçois chaque jour un fichier (réponse a un formulaire) dans lequel il y a des liens urls dessus (plusieurs lien url par ligne et 1 ligne par réponse).

depuis ce fichier excel 97/2003 peut-on récupérer automatiser une tache dans laquelle le fichier excel va récupérer ces images (qui sont sur un serveur distant) et les déposer dans un dossier de mon pc ?

pour pimenter le tout, ces liens url ont besoin d'être renommé (sur une ligne de réponse j'ai en cellule C2 par ex le lien url et en cellule D3 le nom qu'il faut donner à cette image.

en espérant que mes explications sont claires

par avance merci pour vos retours !!!

Re,

petite rectification :

dans mon exemple il s'agit des cellules C2 et D2 et non D3 ...

sorry

Bonjour,

Voici un exemple de ce qu'on peut faire. Ici une URL en B, le bouton lance l'import de l'image dans un sous-dossier (qui se crée tout seul), et l'affiche en C avec le nom de A

Pierre

391recup-images-web.xlsm (22.46 Ko)

bonjour

merci pour votre retour

je remets votre fichier avec quelques annotations pour mieux expliquer ...

pour info, je ne suis pas très fort ....

top le bouton ça c'est pile poil ce qu'il me faut !

a vous lire

cordialement

Huum, j'ai bien peur que la méthode que je propose ne soit pas pertinente pour ce type d'url

pas facile .....

en tout cas merci pour avoir pris le temps d'y jeter un oeil

En fouillant un peu sur le net, j'ai trouvé un code qui semble fonctionner sur mon PC.

Le voici adapté au fichier proposé :

Option Explicit

Private Declare PtrSafe Function TelechargerFichierURL 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 Const BINDF_GETNEWESTVERSION As Long = &H10
Public Const DOSSIER = "D:\"

Sub Go(Optional x As Byte)
Dim Rep As String, srce As String, dest As String, i As Long, j As Integer, ok As Boolean

    With ActiveSheet
        For i = 2 To ActiveSheet.Cells(Rows.Count, "C").End(xlUp).Row
            Rep = DOSSIER & .Cells(i, "F").Value & "\"
            If Not Exist_Rep(Rep) Then MkDir Rep
            Rep = Rep & .Cells(i, "C").Value & "\"
            If Not Exist_Rep(Rep) Then MkDir Rep
            For j = 7 To 50 Step 3
                If Not .Cells(i, j).Value = "" Then
                    srce = .Cells(i, j).Value
                    dest = Rep & .Cells(i, j + 1).Value & ".jpg"
                    If Not Exist_Fichier(dest) Then ok = TelechargerFichierInternet(srce, dest)
                End If
            Next j
        Next i
    End With
End Sub

' de https://excel-malin.com/codes-sources-vba/telecharger-fichier-internet/
Public Function TelechargerFichierInternet(SourceUrl As String, FichierLocal As String) As Boolean
TelechargerFichierInternet = TelechargerFichierURL(0&, SourceUrl, FichierLocal, BINDF_GETNEWESTVERSION, 0&) = ERROR_SUCCESS
End Function

L'ensemble de ce code est à copier/coller à la place de l'ancienne proposition, et le bouton de lancement est à déplacer sur la feuille "exemple"

A noter : c'est pas très rapide ... lancer et aller boire un café ... ou même 2

Il faut aussi adapter le nom du dossier "initial" D:\ à la place de : Public Const DOSSIER = "D:\"

Pierre

Bonjour

voici ce que ça me donne

1

Il suffit d'effacer l'indication PtrSafe

ok mais en fait après cela me donne une autre erreur ....

sorry je ne connais pas le language vba ...

1

Ok no problemo, try this one :

Avé Pierre !

merci ca marche

juste pour savoir... est-il possible de mettre par exemple une affiche lorsque l'opération est terminée ?

par exemple affiche une image comme cela je peux le laisser tranquille ...

exemple d'image au cas ou

fin

Bonjour,

Le plus simple est d'afficher un message. A la fin de la procédure "Go" on peut ajouter la ligne MsgBox "Ok" juste avant la ligne End Sub

Pierre

ah bah c'est top ça mais vous allez me haïr mais comment fait-on ?

petite question, pour ce type de fichier, la puissance du pc a t-il une incidence sur le traitement et la rapidité ou pas ?

Non, pas de soucis. Voilà la modif avec un message de fin.

Pour ce traitement, ici le temps est surtout dépendant de la vitesse de connexion internet. Avec une liaison fibre ce sera plus rapide qu'avec de la mauvaise 3G du fin fond d'un trou perdu.

Maintenant si les photos sont stockées différemment (voir 1ère méthode proposée) le téléchargement peut être nettement plus rapide. Mais si on a pas le choix, alors il faut se montrer patient.

Pierre

avant de faire une boulette je peux renommer le fichier excel ou non ?

oui, sans pb.

Bonjour

ca fonctionne impeccablement, je clos le sujet

encore merci pour votre aide

cordialement

Rechercher des sujets similaires à "importer fichiers images url"