Ouvrir un lien - télécharger l'image - renommer en fonction d'1 cellule

Le forum, les experts,

Bonjour à toutes et à tous.

Je viens vers vous suite à de nombreuses recherches qui frôlaient mon besoin sans pour autant faire ce que je désire.

Pour résumer ma demande (un fichier test sera mis à disposition en pièce-jointe), je souhaite automatiser un tableau Excel d'environ 20 000 lignes pour le processus suivant :

A

B

C

1

Référence produit

Lien hypertexte

Réussite ?

22000-115https://www....Oui / Non

Dans l'ordre les étapes :

1) Ouvrir le lien hypertexte

2) Télécharger l'image avec le nom précis qui lui est rattaché concernant la référence produit (il peut y avoir des tirets, des lettres, des /, des chiffres...) qui se trouve en colonne A

3) Enregistrer dans un dossier toutes les images (qui se trouvera sur le bureau, téléchargement... La possibilité de choisir la destination serait incroyable, mais j'imagine que c'est complexe ahah).

Petit bonus (si c'est possible, autant rêver...) Afficher un "Oui" en colonne C si le téléchargement et le placement dans le dossier a réussi.

À NOTER QU'IL Y A POSSIBLEMENT DES CASES VIDES DANS LA PARTIE DES LIENS. SI VIDE, PASSER À LA SUIVANTE.

De plus, certaines images sont en double : il se peut qu'une image corresponde à plusieurs produits. Chaque image doit réellement correspondre au nom de la référence.

Si possible un code assez "libre" pour que je puisse m'en resservir à l'avenir pour le même problème.

J'imagine que c'est quelque chose de compliqué, si vous avez la moindre petite idée, c'est déjà un grand pas pour moi.

Merci d'avance !

Bonjour,

Rien de compliqué dans cette demande.

Voici un premier jet fait rapidement :

* un bouton "Go" pour lire les Url et importer les jpeg

* les jpeg sont importés dans un dossier "jpg" à côté du fichier xl (dossier qui se crée tout seul à la 1ère utilisation). Il sera facile de modifier pour choisir un dossier de destination si besoin.

* si import=ok en C s'affiche la mention "Ok"

* ici pour cette démo seules les lignes de 2 à 6 sont traitées, mais il est simple d'étendre à l'ensemble des lignes

=> cf code For i = 2 To UBound(T, 1) au lieu de For i = 2 To 6

La suite à plus tard si ce début convient

Pierre

Bonjour Pierre,

Tout d'abord merci pour votre réponse. Elle semble fonctionner !

Seul bémol, impossible de trouver les fichiers téléchargés, le dossier "jpg" n'existe pas sur mon ordinateur. J'ai pourtant placé le fichier Excel ci-joint dans un dossier (que j'ai noté "jpg" au cas où), placé sur le bureau.

Savez-vous pourquoi je ne retrouve pas les images ?

bien à vous,

Merci infiniment.

inte-zbi

Ok

Alors voici une version dans laquelle les jepg sont téléchargés dans le dossier à choisir au début du traitement

Pierre

Ps : au cas ou : code incompatible avec Mac ...

Version avec du code pour MAC (non testée car écrit sur PC)

Le code pour le choix du dossier est de Ron Debruin =>

https://www.macexcel.com/examples/filesandfolders/selectfolder/

Sans garantie de fonctionnement ...

Pierre, merci infiniement pour votre investissement, de là à aller adapter à Mac, j'en demandais pas autant... Merci.

Petit retour concernant copie-de-fichier-vba-telechargement.xlsm (sous PC, j'ai un PC à disposition également)

-> Le choix de la destination marche nickel, pas de problème.

-> Sur les 6 premières lignes, il y a en réalité des images utilisées pour chaque ligne (les liens allant de la ligne 3 à la ligne 6 sont en réalité les mêmes photos). Problème : une seule image est téléchargée !

-> Les images ne sont pas renommées, elles gardent le nom "original" de l'image et non la référence qui est à côté du lien.

Pour la version MAC, ça ne fonctionne pas, mais ce n'est pas un soucis puisque je peux le faire sur un PC !

Ok, c'est pas un souci.

P

Merci Pierre, on approche de la fin, tout fonctionne pour le mieux...

-> Pour les références présentants des tirets "/", le téléchargement ne se fait pas...

Petite question : Si je décide d'envoyer les 14 000 d'un coup, cela va ralentir l'ordinateur j'imagine ?

Je suis tellement content, on approche de la fin. Merci pour ton suivi et ta réactivité !

Inte

Sous Windows, il n'est pas possible de nommer un fichier avec certains signes dont "/".

On peut alors remplacer ce "/" par exemple par "_" lors de l'utilisation du nom en A

Ce qui donne le code suivant :

Sub Import_Jpg()
Dim T As Variant, lg As Long, i As Long, Nm As String

    With Sheets("Feuil1")
        lg = .Cells(Rows.Count, 1).End(xlUp).Row
        T = .Range("A1:C" & lg).Value
        Rep = Choix_Rep & Application.PathSeparator
        For i = 2 To 6
        'For i = 2 To UBound(T, 1)
            If Not CStr(T(i, 2)) = "" Then
                Nm = Replace(T(i, 1), "/", "_")
                If Not Ndf_Jpg(CStr(T(i, 2)), Nm) = "" Then T(i, 3) = "ok"
            End If
        Next i
        .Range("A1").Resize(UBound(T, 1), UBound(T, 2)) = T
    End With
End Sub

Et au lieu de "_", on peut choisir tout autre signe valide dans la ligne : Nm = Replace(T(i, 1), "/", "_")

Pierre, comment vous remercier. Tout fonctionne.

Merci merci merci x10.000 ! Pour votre patience et vos explications !

Prenez soin de vous.

Rechercher des sujets similaires à "ouvrir lien telecharger image renommer fonction"