Vba + export ftp

eideal44

XLDnaute Junior
Bonjour,

J'ai un problème sur un chargement d'un dossier sur un serveur FTP, le fichier excel fait 27Mo en taille, c'est peut être cela qui bloque le transfert. En fait quand j'arrive au transfert, il m'indique que le transfert n'est pas possible dans la msgbox.
J'ai lu et relu plusieurs textes sur l'export FTP mais je ne vois pas d'où vient ce problème. J'ai même vérifier les API et ça colle avec ce que j'ai lu.
Je suis sur excel 2010.
Je vous joint ci-dessous mon code VBA en modifiant les paramètres :

Code:
Option Explicit

'-------------------
'Déclaration des API
'-------------------
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer

Private 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

Private 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
Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean

Private Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" (ByVal hConnect As Long, ByVal lpszRemoteFile As String, ByVal lpszNewFile As String, ByVal fFailIfExists As Long, ByVal dwFlagsAndAttributes As Long, ByVal dwFlags As Long, ByRef dwContext As Long) As Boolean

Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hConnect As Long, ByVal lpszLocalFile As String, ByVal lpszNewRemoteFile As String, ByVal dwFlags As Long, ByVal dwContext As Long) As Boolean
'************************************************************************************


'************************************************************************************
'transfère des fichiers du disque local vers un serveur ftp (upload, mode passif)
Sub EXPORT_FTP()
Dim CONNEXION As Long
Dim OUVERTURE As Long
Dim SELECTION_DOSSIER
Dim FICHIER

'PARAMETRES : xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
IP = "000.00.000.000"
LOG = "testlog"
MDP = "mdp"
FICHIER = "nom-fichier.xls"
'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Application.ScreenUpdating = False

On Error GoTo Err_Sub

'ouvre internet
OUVERTURE = InternetOpen("ftp://" & IP", 0, vbNullString, vbNullString, 0)
    If OUVERTURE = 0 Then
        InternetCloseHandle OUVERTURE 'Fermer internet
        Application.Wait Now + TimeValue("00:00:30") 'attendre 30 secondes
        EXPORT_FTP 'relancer la macro
    Else
        'Connection au site ftp
        CONNEXION = InternetConnect(OUVERTURE, IP, 21, LOG, MDP, 1, 0, 0)
            If CONNEXION = 0 Then
                InternetCloseHandle CONNEXION
                InternetCloseHandle OUVERTURE 'Fermer internet
                Application.Wait Now + TimeValue("00:00:30")
                EXPORT_FTP
            Else
            'test si presence du fichier
            SELECTION_DOSSIER = FtpSetCurrentDirectory(CONNEXION, "/import_excel")
                    If SELECTION_DOSSIER = 0 Then
                        InternetCloseHandle CONNEXION
                        InternetCloseHandle OUVERTURE
                        Application.Wait Now + TimeValue("00:00:30")
                        EXPORT_FTP
                    Else
                        TRANSFERT = FtpPutFile(CONNEXION, "TEST", "M:\" & FICHIER, &H2, 0)
                            If TRANSFERT Then
                    
                            MsgBox "ok"
                    
                                InternetCloseHandle CONNEXION
                                InternetCloseHandle OUVERTURE
                    
                            Else
                    
                            MsgBox "n'arrive pas a transferer"
                    
                                InternetCloseHandle CONNEXION
                                InternetCloseHandle OUVERTURE
                                Application.Wait Now + TimeValue("00:05:00")
                                EXPORT_FTP
                            End If
                    End If
            End If
    End If
    
Application.ScreenUpdating = True
    
Exit Sub

Err_Sub:
    InternetCloseHandle CONNEXION
    InternetCloseHandle OUVERTURE
    EXPORT_FTP
    End
End Sub
'************************************************************************************

Merci d'avance pour vos retours.

Eideal44
 

eideal44

XLDnaute Junior
Re : Vba + export ftp

C'est bon j'ai trouvé pour le telechargement, c'était au niveau du :
TRANSFERT = FtpPutFile(CONNEXION, "TEST", "M:\" & FICHIER, &H2, 0)
en fait il fallait mettre :
TRANSFERT = FtpPutFile(CONNEXION, "M:\" & FICHIER, "TEST.xls", &H2, 0)

sauf qu'il me télécharge le fichier vide. je suis sur le fichier quand je lance le telechargement, est ce que ça peut venir de cela tout en sachant que le fichier est enregistré avant d'effectuer l'envoi?

Merci pour vos retours
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 868
dernier inscrit
pierreselo33