VBA : Copie un fichier vers un dossier ftp

Bens7

XLDnaute Impliqué
Bonjour a tous !
Primo : Google est mon ami et oui j'ai chercher 1:20 .... sans trouver :
Voila j'ai un fichier sur mon DD : D:\WEB\Essai.htm
et un raccourci vers mon ftp sur mon bureau exemple: ftp.monsite.com
Je souhaite copier le Essai.htm du DD vers >>> le ftp : www.monsite.com/essai/Essai.htm
et ce depuis ma feuil excel

Voili voulou merci encore pour votre aide !
 

Bens7

XLDnaute Impliqué
Re : VBA : Copie un fichier vers un dossier ftp

Je suis desole je reviens sur ce post mais sans aucune reponsse viable ! le code donner untiliser du CMD ou un fichier BATCh en plus il faut coder manuelement les noms des fichiers un a un .
Le probleme est que si je veux Uploader tout les fichiers contenu dans mon dossier : c:MON ORDI/upload/
et ya une trentaine de fichiers qui change tous les jours ta solution n'est pas bonne...
Je suis desole mais j'arrete pas de chercher et la je trouve rien qui corespond ... meme sur Google c'est que l'envoie "d'un" fichier pas plusieurs... Voila vraiment un gros gros et HELPPPP !
 

motard59

XLDnaute Junior
Re : VBA : Copie un fichier vers un dossier ftp

bonjour
moi j utilise ca
à adapter bien sur
renseigner ce qui est en rouge et ca doit fonctionner


Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" ( _
ByVal sAgent As String, ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" ( _
ByVal hInternetSession As Long, ByVal sServerName As String, _
ByVal nServerPort As Integer, ByVal sUsername As String, _
ByVal sPassword As String, ByVal lService As Long, _
ByVal lFlags As Long, ByVal lContext As Long) As Long
Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias _
"FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
ByVal lpszDirectory As String) As Boolean
Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" ( _
ByVal hFtpSession As Long, _
ByVal lpszLocalFile As String, _
ByVal lpszRemoteFile As String, _
ByVal dwFlags As Long, _
ByVal dwContext As Long) As Boolean
Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer


Sub ftp()
'transfère des fichiers du disque local vers un serveur ftp (upload, mode passif)
Dim Start As Single

'PARAMETRES************************
fichier = "D:\chemin de ton fichier à transferer"
login = "login de ton ftp"
mot_passe = "mot de passe"
rép = "/www/dossier ou transferer le fichier sur ftp"
bin_asc = &H2 '(&H1 ascii, &H2 binaire)
Mode = &H8000000 '(&H8000000 mode passif, 0 mode actif)
'**********************************

'lancer le transfert
internet_ok = InternetOpen("PutFtpFile", 1, "", "", 0)
If internet_ok = 0 Then
MsgBox "connection internet impossible"
Exit Sub
End If
ftp_ok = InternetConnect(internet_ok, "ftp.nom de ton ftp.fr", 21, login, mot_passe, 1, Mode, 0)
If ftp_ok = 0 Then
MsgBox "connection impossible"
Exit Sub
End If
sélect_rép = FtpSetCurrentDirectory(ftp_ok, rép)
If sélect_rép = 0 Then
MsgBox "impossible de trouver le répertoire "
Exit Sub
End If

'nom du fichier sans le chemin
nomfich = fichier
Do While InStr(nomfich, "\") > 0
nomfich = Right(nomfich, Len(nomfich) - InStr(nomfich, "\"))
Loop

'transférer le fichier
succès = FtpPutFile(ftp_ok, fichier, nomfich, bin_asc, 0)
If succès Then
résult = nomfich & " a été transféré "
Else
résult = nomfich & " n'a pas pu être transféré"
End If

'fermer les pointeurs, ménage
InternetCloseHandle ftp_ok
InternetCloseHandle internet_ok

'annoncer le résultat de l'opération
If résult <> "" Then
UserForm3.Label1 = résult
UserForm3.Show
'MsgBox résult
Else
UserForm3.Label1 = "aucun fichier transféré"
UserForm3.Show

'MsgBox "aucun fichier transféré"
End If

End Sub
 
Dernière édition:

Yaloo

XLDnaute Barbatruc
Re : VBA : Copie un fichier vers un dossier ftp

Bonsoir Bens, le forum,

J'y connais rien en serveur ftp etc... mais est-ce que la macro de motard59 fonctionne pour 1 fichier ?
Si oui, il faudrait faire une boucle avec tes fichiers.
Où se trouvent tes fichiers ? Sont-ils répertoriés dans ton classeur ? S'agit-il de tous les fichiers contenus dans un seul répertoire ?

A te relire

Martial
 

Staple1600

XLDnaute Barbatruc
Re : VBA : Copie un fichier vers un dossier ftp

Bonjour à tous, Bens7, Yaloo

EDITION
: Après quelques recherches, voici un autre lien qui semble plus prometteur
(et qui utilise le contrôle Microsoft Internet Transfer Controls 6.0)
FTP Server Upload Download Files Using VBA

Juste pour infos
Le lien que j'ai posté (en mars 2014) dans le message # 2 de ce fil, est toujours valide ;)
https://www.excel-downloads.com/threads/vba-copie-un-fichier-vers-un-dossier-ftp.217730/
Et il renvoie toujours vers un exemple de macro qui upload plusieurs fichiers vers un FTP.
(voir la version en bas de page)

Il faut juste quelques adaptations selon l'OS utilisé.
(ainsi que l'ajout d'une boucle pour lister tous les fichiers du répertoire)

NB: Si on éprouve quelques désagréments à l'utilisation d'un batch MSDos, on peut le lancer plus commodément par un script VBS (adaptable en VBA)
 
Dernière édition:

Bens7

XLDnaute Impliqué
Re : VBA : Copie un fichier vers un dossier ftp

Je vous remercie pour vos réponses,
- Oui je souhaiter uploader tous les fichiers contenu dans un seul dossier
genre "c:monordi/upload/" tous ce qu'il y a dans le dossier upload.
- Je vais voir également le 2 eme lien propose.
- Concernant "l'adaptation" étant novice en VBA je ne serais l'adapter peut tu me le mettre si possible ?
- Le Batch que j'ai creer marche nikel donc j'ai creer un vba qui creer un fichier .txt oubya les info ftp et le batch va les chercher ... mais le soucci c'est que impossible de lancer mon batch par VBA donc j'ai chercher la solution mais le batch sr lance et ne va pas jusqua bout et au peiu de me galerer a chercher un code qui marche pour lancer le Batch je prefere chercher un code direct pour l'upload directement ...
 

Bens7

XLDnaute Impliqué
Re : VBA : Copie un fichier vers un dossier ftp

Staple ton 2 eme lien c'est pour télécharger des fichiers du ftp , j'ai besoin de l'inverse...
Bon ... je suis sur qu'une ame charitable a deja un ptit code aui fonctionne nikel juste a changer les info FTP .... donc sujet toujours ouvert...
 

Bens7

XLDnaute Impliqué
Et voila ! ça ma mit 3 ans mais j'ai réussi ! lolll
Je me suis replonger par nécessiter dans mon ancien post et j'ai le plaisir de vous annoncer que j'ai uploader mon premier fichier grâce au code de motard59 ! mille merci ...

Neamoins .. loll ( faut bien ) j'ai essayer d'uploader tout le contenu d'un dossier mais impossible :
j'ai mis dans les parametres :
fichier = "C:\Users\BEN\Desktop\TEMP"

est ce que quelqu’un a une idee pour uploader tout le contenu d'un dossier ou tout le dossier entier ?
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16