Le développement du Cloud et du travail collectif obligent, l'utilisateur d'Excel (et de VBA) aura de plus en plus besoin de faire appel à des fichiers stockés sur SharePoint (la plateforme pour gérer le contenu distant de Microsoft). Si vous avez besoin de télécharger un fichier à partir de SharePoint via VBA, c'est tout à fait possible. Vous pouvez utiliser le code VBA qui suit car le code habituel pour copier un fichier ne fonctionnera pas.
La fonction VBA utilisée dans ce code (URLDownloadToFile
) requiert deux paramètres: le URL du fichier sur SharePoint et le chemin de destination du fichier (son nom inclus). Ces deux paramètres sont de type String
.
Pour votre information, ce code VBA n'utilise pas des fonctions spécifiques à Excel et peut donc être utilisé tel quel dans les autres logiciels de la suite MS Office (Access, Word, Outlook,…).
Code VBA pour copier un fichier de SharePoint
Le code VBA qui suit se compose de deux parties:
- la fonction
URLDownloadToFile
qui provient de la librairie système"urlmon"
(mais cela ne doit pas particulièrement vous préoccuper) - la procédure
TelechargerFichierDeSharepoint
qui vous montre comment utiliser la fonctionURLDownloadToFile
…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
Option Explicit 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 Sub TelechargerFichierDeSharepoint() Dim CheminDestination As String Dim ValeurRetour As Long 'l'adresse url du fichier sur Sharepoint Const URLSharePoint As String = "http://teams/Departement/Shared Documents/Reports/Dossier_test/fichier_test.pdf" 'chemin et le nom de la destination CheminDestination = "C:\Mes Documents\Dossier Test\fichier_test.pdf" 'lance le téléchargement ValeurRetour = URLDownloadToFile(0, URLSharePoint, CheminDestination, 0, 0) End Sub |
URLDownloadToFile
ne doit pas être modifié. Vos modifications doivent se faire au niveau de la procédure TelechargerFichierDeSharepoint
.
Remarque: Si vous utilisez SharePoint 2013 / 2016 / 2019, il faut adapter les liens (URL) vers les fichiers d'une manière spécifique. Pour en savoir plus, visitez la page "VBA et SharePoint 2013".
Sachez également que le travail avec des fichiers distants a fait l'objet de nombreuses nouveautés dans Excel 2016.
Pourrait également vous intéresser en VBA
Voici quelques articles qui pourraient vous servir dans votre travail avec VBA…
- Liste de toutes les fonctions VBA
- Cours VBA gratuit en ligne: "VBA: Droit au but"
- Référentiel VBA en PDF avec toutes les fonctions, instructions, opérateurs et événements
- VBA: copier un dossier directement avec son contenu
- Envoyer un email avec VBA
- Comment utiliser RECHERCHEV en VBA
8 commentaires sur “VBA: Copier fichier SharePoint (ayant une adresse URL)”
Bonjour, le code fonctionne.
Mais il n'est pas possible d'ouvrir le fichier télécharger : Message : Format incorrect.
C'est le rouage qui me manque pour migrer l'ensemble de mes fichiers sous teams.
Avez-vous une explication ou une astuce ?
Merci
Bonjour,
je crois que le problème pourrait venir de votre version d'Office.
Lorsqu'un fichier est "uploadé" sur le SharePoint (ou Teams), il est converti pour pouvoir être consulté online – donc probablement en Office 365.
Or, certaines des fonctionnalités de Office 365 ne sont pas disponibles dans les versions précédentes d'Office.
Donc si vous avez par exemple Excel 2013 en local, il est possible qu'il ne sache pas ouvrir le fichier Excel venant du SharePoint et qui a le format du fichier Excel 365…
Donc si vous n'avez pas Office 365, essayez peut-être de demander à quelqu'un qui l'a de lancer ce code et d'essayer d'ouvrir la copie locale avec son Excel 365. S'il sait l'ouvrir, cela confirmerait ma supposition.
Cordialement, Martin
Bonjour,
Merci pour la réponse.
J'ai contourné le soucis.
Du coup maintenant je dois publier et non télécharger mes fichiers sous teams.
Je n'ai trouvé aucune commande sur le net.
Auriez-vous une piste ?
Merci
Bonne journée
Bonjour
J'ai le même soucis mon image (en .jpg) se télécharge bien de mon SharePoint vers mon bureau mais j'ai aussi le message " Format incorrect".
Pourtant mon entreprise a bien MS Office 365 Business.
Comment résoudre ce problème ?
Merci d'avance
Bonjour
J'ai le même soucis mon image (en .jpg) se télécharge bien de mon SharePoint vers mon bureau mais j'ai aussi le message " Format incorrect".
Pourtant mon entreprise a bien MS Office 365 Business.
Comment résoudre ce problème ?
Merci d'avance
Bonjour,
Merci beaucoup pour ce code qui fonctionne très bien chez moi.
J'avais une question : existe il un moyen similaire pour déposer des fichiers sur un SharePoint, toutes les solutions à bases de :
Set objNet = CreateObject("WScript.Network")
Set FS = CreateObject("Scripting.FileSystemObject")
FS.CopyFile LocalAddress, SharepointAddress
ne fonctionne pas chez moi. Auriez-vous une solution par hasard
Super!
Est-ce qu'il existe l'équivalent pour copier un fichier sur le sharepoint, en VBA, SVP.
Bonjour,
Merci pour ce code, mais ça ne fonctionne pas pour les fichiers .xlsm.
Connaissez vous une autre methode, SVP.
Merci