Erreur d'exécution '3004': Impossible d'écrire dans le fichier

Bonjour,

J'ai un soucis concernant un fichier, j'ai un besoin de télécharger un certain nombre de photos et pour cela j'ai le lien d'hébergement de chaque photo (je ne peux pas vous donner le lien mais les photos sont hébergées sur un serveur appartenant à mon entreprise). J'ai créé une macro qui est censée me télécharger ces photos et les nommer en fonction de la valeur rentrée dans une certain cellule. Mais voila quand je lance la macro j'ai un message d'erreur qui me dit " Erreur d'exécution '3004': Impossible d'écrire dans le fichier " et quand j'active le débogage cela me surligne cette ligne de code : objStream.SaveToFile imgPath & imgName & ".jpg", 2

J'ai cherché des solutions mais je ne trouve rien, j'ai essayé sur mon ordi perso pour voir si c'était un problème droit mais je ne peux pas non plus. Donc je ne sais pas si c'est une erreur de code ou si c'est tout bonnement impossible...

Je vous met le code macro juste ici et en pièce jointe je vous met le document avec des liens qui ne sont pas ceux que je dois télécharger.

Sub TéléchargerImages()
Dim ws As Worksheet
Dim i As Integer
Dim imgURL As String
Dim imgName As String
Dim imgPath As String
Dim objHTTP As Object
Dim objFSO As Object
Dim objStream As Object

Set ws = ThisWorkbook.Sheets("TImg")

imgPath = "C:\Users\malo.gloux\Downloads\"

' Créez les objets HTTP, FSO et Stream
Set objHTTP = CreateObject("MSXML2.XMLHTTP")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objStream = CreateObject("ADODB.Stream")

' Bouclez à travers les lignes avec des liens et des noms d'images
For i = 2 To ws.Cells(Rows.Count, 1).End(xlUp).Row
imgURL = ws.Cells(i, 2).Value ' Lien de l'image

imgName = ws.Cells(i, 1).Value ' Nom de l'image

' Téléchargez l'image
With objHTTP
.Open "GET", imgURL, False
.send
objStream.Open
objStream.Type = 1
objStream.Write .responseBody
objStream.SaveToFile imgPath & imgName & ".jpg", 2
objStream.Close
End With
Next i

' Libérez les objets
Set objHTTP = Nothing
Set objFSO = Nothing
Set objStream = Nothing

MsgBox "Téléchargement des images terminé !", vbInformation
End Sub

Merci beaucoup pour votre aide,
Bien à vous,
MaloG

[s=co-c0504d][/s]

Bonjour,

J'ai remplacé la ligne objStream.SaveToFile imgPath & imgName & ".jpg", 2

par objStream.SaveToFile "E:\temp\essai.jpg", 2 et là pas d'erreur, le fichier est bien créé dans Temp

Il semble donc que l'erreur vienne de la définition du chemin.

Par contre quand j'ouvre l'image, j'ai un écran noir.

A toi de voir

Bonne continuation

Eric

Bonjour Eric,

Merci pour votre réponse, malheureusement cela ne marche pas de mon côté, j'ai bien changé comme vous me l'avez indiqué en précisant un chemin existant, mais cela me fait toujours apparaitre l'erreur d'execution 3004.

Mais si cela marche chez vous c'est que je dois avoir un soucis de mon côté autre que le code.

Bien à vous,

Malo

Edit modo :
Merci de pensez à utiliser les balises de code en cliquant sur le bouton </> dans le menu
Voir la charte --> Autre règles à respecter --> https://forum.excel-pratique.com/excel/a-lire-avant-de-poster-charte-du-forum-et-informations-utiles...

Bonjour Malo

Regarde ce post où l'on traite le sujet.

Importer des fichiers images depuis une URL (excel-pratique.com)

Le classeur final (en fin de post) fonctionne, je l'ai essayé.

Bonne journée

Bonjour Eric,

Merci beaucoup pour votre réponse et votre temps, cela fonctionne !

Bien à vous,

Malo

Rechercher des sujets similaires à "erreur execution 3004 impossible ecrire fichier"