Transférer un fichier par FTP

Comment utiliser excel pour transférer un fichier sur un serveur par FTP

Attention, il faut tout d'abord :

  1. Disposer d'un serveur FTP avec un répertoire sur lequel vous avez les droits en ECRITURE (Chmod=777)
  2. Connaître l'adresse FTP du serveur, le login et le mot de passe pour s'y connecter

Rentrez ces données sur une feuille de votre classeur nommée ici FTP (adaptez !) en A10, l'adresse FTP du serveur. Par exemple : ftpperso.free.fr en A11 votre login FTP (voir avec votre hébergeur) en A12 votre mot de passe (FTP pas email !) en A13, l'adresse exacte du dossier, y compris les slash /, dans lequel votre fichier doit être transféré.
Cela donne quelque chose de la forme /upload/ (si votre dossier s'appelle upload), mais suivant l'hébergeur cela peut être beaucoup plus compliqué ! /domains/votresite.extension/public_html/dossier/sous-sossier/ Attention, vous ne pouvez pas transférer le classeur contenant le code du transfert.

sub ExportFtp() 'J@C, Christian Herbé, Michel Pierron, Flo Cabon
 'transfère un fichier (ici un classeur nommé transfert2.xls)
 'du répertoire local vers le répertoire adhoc du serveur ftp (upload)
 Dim InternetOK
 Dim FtpOK
 Dim FtpServeur
 Dim FtpLogin
 Dim FtpPass
 Dim DossierLocal
 Dim DossierDistant
 Dim Result
 Dim Internet_OK
 Dim FTP_OK
 Dim Select_DossierDistant
 Dim Resultat
 Dim res
 
 DossierLocal = ThisWorkbook.Path & ""
 DossierDistant = Range("ftp!A13").Value
 FtpServeur = Range("ftp!A10").Value
 FtpLogin = Range("ftp!A11").Value
 FtpPass = Range("ftp!A12").Value
 
 'Vérifier la connection à internet
 InternetOK = InternetOpen("PutFtpFile", 1, "", "", 0)
  If InternetOK = 0 Then
  MsgBox "connection internet impossible"
  Exit sub
  End If
 Const INTERNET_FLAG_PASSIVE = &H8000000
 'Vérifier l'accès ftp
 FtpOK = InternetConnect(InternetOK, FtpServeur, 21, FtpLogin, FtpPass, 1, INTERNET_FLAG_PASSIVE, 0)
  If FtpOK = 0 Then
  MsgBox "connection FTP impossible"
  Exit sub
  End If
  
 'vérifier le dossier distant
 Select_DossierDistant = FtpSetCurrentDirectory(FtpOK, DossierDistant)
 If Select_DossierDistant = 0 Then
  MsgBox "impossible de trouver le répertoire distant "
  Exit sub
 End If
 
 Resultat = ""
 'adresses du ou des fichiers à transférer
 FichierLocal = DossierLocal & "transfert2.xls"
 FichierDistant = "transfert2.xls"
 
 'transférer les fichiers
 Const FTP_TRANSFER_TYPE_BINARY = &H2
 'mode passif proxy
 'transfert du fichier sql
 succès = FtpPutFile(FtpOK, FichierLocal, FichierDistant, FTP_TRANSFER_TYPE_BINARY, 0)
 If succès Then
  Result = FichierDistant & " a été transféré "
 Else
  Result = FichierDistant & " n'a pas pu être transféré"
 End If
  
 'annoncer le résultat de l'opération
 If Result <> "" Then
 MsgBox Result
 Else
 MsgBox "aucun fichier transféré"
 End If
 
 'fermer les pointeurs, ménage
 InternetCloseHandle FTP_OK
 InternetCloseHandle Internet_OK
 
 end sub

Auteurs : , , ,

Mots clefs associés à cette page :

Et dans Word ?

bonjour, j'aurais besoin de cette fonctionnalité dans une macro Word, mais ça coince sur les fonctions WinINet InternetOpen, InternetConnect, etc...

Le vba et surtout le monde des macros n'étant pas mon domaine de prédilection, je ne sais même pas comment rajouter une dll en référence, pouvez-vous me décrire comment procéder ?

merci d'avance,
slyzen

edit : j'ai oublié de préciser que j'ai essayé par le menu Outils > Références > Parcourir pour ajouter la wininet.dll : j'ai un msg qui annonce "Impossible d'ajouter une référence au fichier spécifié"