Aller au contenu principal

WinSCP - utilisation avec Visual Basic for Application

Automatisez des transferts de fichiers SFTP/FTP sécurisés directement depuis MS Office. Découvrez comment appeler les DLL WinSCP avec du code Visual Basic for Application (VBA), exemple pratique à l'appui.

· 2 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.

WinSCP - utilisation avec Visual Basic for Application

⚡
TL;DR

Cet article montre comment appeler la bibliothèque .NET/COM de WinSCP depuis VBA (par exemple dans Excel) pour automatiser des transferts de fichiers sécurisés : un objet Session se connecte en SFTP avec l'host, les identifiants et l'empreinte de la clé SSH, puis PutFiles envoie les fichiers, avec une gestion d'erreurs via On Error Resume Next et une boucle sur les résultats qui confirme chaque transfert.

WinSCP est un gestionnaire de fichiers gratuit et open-source qui permet de transférer des fichiers en toute sécurité entre votre machine et des serveurs distants, via des protocoles comme SFTP, FTP, SCP et WebDAV.

Saviez-vous que vous pouvez appeler WinSCP depuis ... du code VBA ?

Voir https://winscp.net/eng/docs/library_vb#using. Il y a aussi plusieurs sujets sur le forum : https://winscp.net/forum/search.php?mode=results

Les DLL de WinSCP peuvent être appelées depuis du code VBA, ce qui permet donc d'envoyer ou de télécharger un fichier vers ou depuis un serveur FTP.

Si VBA n'est pas une obligation, WinSCP peut faire la même chose avec son propre langage de script, bien plus simple ; voir WinSCP - Synchroniser l'host et le serveur distant et WinSCP - Télécharger récursivement les fichiers d'une extension donnée.

Voici un exemple VBA simple que vous pouvez utiliser dans MS Excel, par exemple, pour envoyer un fichier sur votre serveur distant.

Option Explicit

Sub Example()

Dim mySession As New Session

' Enable custom error handling
On Error Resume Next

Upload mySession

' Query for errors
If Err.Number <> 0 Then
MsgBox "Error: " & Err.Description

' Clear the error
Err.Clear
End If

' Disconnect, clean up
mySession.Dispose

' Restore default error handling
On Error GoTo 0

End Sub

Private Sub Upload(ByRef mySession As Session)

' Setup session options
Dim mySessionOptions As New SessionOptions
With mySessionOptions
.Protocol = Protocol_Sftp
.HostName = "example.com"
.UserName = "user"
.Password = "mypassword"
.SshHostKeyFingerprint = "ssh-rsa 2048 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"
End With

' Connect
mySession.Open mySessionOptions

' Upload files
Dim myTransferOptions As New TransferOptions
myTransferOptions.TransferMode = TransferMode_Binary

Dim transferResult As TransferOperationResult
Set transferResult = mySession.PutFiles("c:\temp\*", "/home/user/", False, myTransferOptions)

' Throw on any error
transferResult.Check

' Display results
Dim transfer As TransferEventArgs
For Each transfer In transferResult.Transfers
MsgBox "Upload of " & transfer.Filename & " succeeded"
Next

End Sub

Cet article vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?