VBA: télécharger fichier de l’Internet

Tout le monde a probablement déjà eu besoin de télécharger un ou plusieurs fichiers d'internet – des images, des vidéos, des PDF,… Mais peu de gens savent qu'il est possible de télécharger simplement un fichier avec Excel – en utilisant une fonction VBA.

Vous n'avez donc même pas besoin d'installer (ou même acheter) un logiciel de téléchargement. Excel fera l'affaire! Et gratuitement…

Télécharger des fichiers d'internet avec VBA

La fonction VBA suivante permet de télécharger un fichier (peu importe son type) à partir de l'internet. Vous n'avez besoin que du lien (URL) du fichier et de son emplacement.

En combinaison avec une boucle, cette procédure devient très puissante pour un téléchargement en masse des photos, documents, vidéos etc. car cette méthode est très rapide et ne requière pas d'interaction de l'utilisateur. Elle est donc idéale pour être automatisée.

Astuce: si les liens URL des fichiers en ligne ont une structure logique (par exemple img001.jpg, img002.jpg,…) ou si vous disposez de la liste des liens, il vous suffit de créer une logique pour attribuer un nom à utiliser pour la copie, une boucle et vous pouvez télécharger des dizaines de fichiers par minute! À utiliser avec modération. Le but n'est vraiment pas de s'en servir pour faire des DDOS!

Sachez aussi que des sites internet se protègent de plus en plus contre le "web scrapping". Il est donc possible que l'approche que je vous propose ne fonctionne pas sur tous les sites internet…

Le code de la fonction VBA qui télécharge des fichiers

Voici donc le code VBA de la fonction en question. Comme le code contient une déclaration ( Declare ), le code doit se trouver au début du Module qui contient le code VBA. Si ce n'est pas le cas, vous aurez droit à un message d'erreur de la par de l'éditeur VBA. La fonction utilise donc deux arguments de type String: SourceUrl (contenant l'URL du fichier distant) et FichierLocal (contenant le nom et l'emplacement de la copie).

Mise à jour: 13/12/2021 – le code a été adapté pour fonctionner également sur la version 64-bits d'Office.

 

Exemple: télécharger une image d'Internet

La procédure VBA qui suit montre comment utiliser la fonction de téléchargement TelechargerFichiersURL. Tant que l'on y est, autant prendre un cas réel! Disons que l'on veut télécharger le logo de "France Télévision" et le sauvegarder dans le dossier MesImagesDuNet sur le disque C:\. Rien de plus simple!

Il vous suffit l'URL de l'image et l'emplacement (chemin + nom du fichier) où vous voulez sauvegarder le fichier et le tour est joué. Aucune boîte de dialogue ne s'ouvre: dans cet exemple, le nom et le chemin à utiliser pour sauvegarder le fichier sont utilisés comme le second paramètre de la fonction.

N'oubliez pas que pour que le code qui suit fonctionne, vous devrez copier dans votre projet les deux codes VBA (l'exemple qui suit ET le code de la fonction plus haut).

 

Cet exemple est fait pour le téléchargement d'une image mais vous l'aurez compris, vous pouvez tout aussi bien télécharger un PDF, un fichier Excel ou encore un fichier texte…

Voici donc un exemple concret de la fréquente sous-estimation d'Excel en tant qu'outil. Qui aurait cru pouvoir utiliser Excel pour télécharger des fichiers sur Internet? Et pourtant… VBA vous donne à disposition de nombreuses possibilités qui dépassent largement l'idée que le public se fait d'un "tableur"…

Quelques remarques utiles

  • Si vous comptez utiliser cette fonction plus souvent, il vous serait probablement utile de vérifier d'abord si le fichier en question se trouve vraiment sur internet. C'est possible et vous trouverez le code VBA, les explications et les exemples dans cet article: VBA: vérifier si fichier sur internet existe / si URL existe Il vous permettra également de tester la validité des adresses internet…
  • Il se peut que si le nom de fichier contient de caractères spéciaux (espace, ', ~ etc.) vous devriez d'abord assainir l'URL du fichier à télécharger. Vous pouvez facilement le faire grâce à la fonction VBA AssainirURL() que je vous ai préparée…
  • Faites aussi attention au protocole utilisé par le site: une adresse web commençant par HTTP ne va pas nécessairement donner le même résultat que la même adresse avec HTTPS!
  • Si vous n'arrivez pas à télécharger un fichier, vérifiez s'il ne se "cache pas" sur une page ou dans un dossier distant qui sont accessibles uniquement après une identification – cela peut parfois  empêcher le script d'accéder au fichier.

Internet & Excel & fichiers: Pour aller plus loin

Tant que l'on est dans le thème de VBA et des fichiers, voici quelques articles qui pourraient vous intéresser:

Et pour finir, quelques autres articles pratiques:

 

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

87 commentaires sur “VBA: télécharger fichier de l’Internet”