Macro FTP

ipotez

XLDnaute Occasionnel
Bonjour,

J'utilise une macro FTP que voici :

Code:
Attribute VB_Name = "transfert_fich"

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)

'PARAMETRES************************
fichier = "c:\rien.doc"
login = "zaza"
mot_passe = "miaou"
rép = "/"
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, "ftpperso.free.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
    MsgBox résult
    Else
    MsgBox "aucun fichier transféré"
    End If

End Sub


Mon problème est que je dois donner le nom du fichier a transférer dans la partie de code suivante :

Code:
'PARAMETRES************************
fichier = "c:\rien.doc"
login = "zaza"
mot_passe = "miaou"
rép = "/"
bin_asc=&H2 '(&H1 ascii, &H2 binaire)
mode=&H8000000 '(&H8000000 mode passif, 0 mode actif)
'**********************************

Comment écrire que je souhaite qu'il transfert le fichier dont le nom est composé par la concaténation de la cellule a1 et b1 ?

Exemple : Je souhaite transférer en FTP le fichier Pierre DUPONT qui se trouve dans C:\
a1 = Pierre b1=Dupont

Merci
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Macro FTP

Bonjour à tous,

Je t'invite à toujours utiliser le Code.Name dans tes codes : il est constant.
Alors que le Name (le nom que tu vois apparaître dans l'onglet) peut être modifié depuis XL


Dans la capture le Code.Nalme est F1. Chez toi il doit être Feuil1 ou Sheet1. Et le Name est mdf-xlpages.com

175678-macro-ftp-capture.png


A+ à tous
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    12.5 KB · Affichages: 139
  • Capture.PNG
    Capture.PNG
    12.5 KB · Affichages: 145
  • Capture.PNG
    Capture.PNG
    12.5 KB · Affichages: 140
Dernière édition:

ipotez

XLDnaute Occasionnel
Re : Macro FTP

Désolé mais c un peu compliqué pour mon niveau... :eek:

Par contre j'ai un autre soucis, j'ai modifié le code pour qu'il prenne la feuille active et non la feuille Trimestre 1. (plus simple pour le dupliquer).

Ce qui me donne :

Code:
'PARAMETRES************************
Chemin = "C:\PLANNING\PDF\"
Fichier = "C:\PLANNING\PDF\" & ActiveSheet.Range("e1") & " " & ActiveSheet.Range("j1") & ".pdf"
login = "**********"
mot_passe = "*********"
rép = "planning/pdf/"
bin_asc = &H2 '(&H1 ascii, &H2 binaire)
Mode = &H8000000 '(&H8000000 mode passif, 0 mode actif)
'**********************************

Ca marche super, par contre j'ai voulu ajouter le même code avec pour objectif d'envoyer en ftp le classeur et là, ça en marche pas (le classeur n'a pu être transféré)
Voici le code

Code:
Sub Ftpxls()
Chemin = "C:\PLANNING\"
Fichier = "C:\PLANNING\" & ActiveSheet.Range("e1") & " " & ActiveSheet.Range("j1") & ".xls"
login = "************"
mot_passe = "**********"
rép = "planning/classeurs/"
bin_asc = &H2 '(&H1 ascii, &H2 binaire)
Mode = &H8000000 '(&H8000000 mode passif, 0 mode actif)
'**********************************

je vois pas la différence avec le code qui marchait pour les pdf :confused::confused::confused:
 

JCGL

XLDnaute Barbatruc
Re : Macro FTP

Bonjour à tous,

A priori cela devrait fonctionner...
Si le classeur existe bien en C:\Planning\Pierre DUPONT.xls ET si E1 est bien égal à 'Pierre' ET si J1 est bien égal à 'DUPONT'.
Pas d'espace après les lettres dans les cellules...

A+ à tous
 

Discussions similaires

Statistiques des forums

Discussions
312 389
Messages
2 087 889
Membres
103 672
dernier inscrit
ammarhouichi