Transférer un fichier par FTP
Attention, il faut tout d'abord :
- Disposer d'un serveur FTP avec un répertoire sur lequel vous avez les droits en ECRITURE (Chmod=777)
- 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 subAuteurs : Michel Pierron, Jacques Chaussard, Flo Cabon, Christian Herbé
Mots clefs associés à cette page : ftp
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

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é"