FTP

Bonjour à tous,

je veux rapatrier une fichier txt (NTC.txt) dans le même répertoire que le fichier excel.

j'ai fait cela et rien ne vas grrrrrrrr alors si quelqu'un a la solution je suis preneur.

à l'avance un grand merci.

Daniel

Sub Get_File_From_FTP()
    Dim URL As String
    Dim LocalFileName As String
    Dim ErrorText As String

    URL = "http://www.monsite.com/BD/NTC.txt"
    LocalFileName = Workbooks(ActiveWorkbook.Name).Path & "\NTC.txt"
    B = DownloadFile(UrlFileName:=URL, _
                    DestinationFileName:=LocalFileName, _
                    Overwrite:=OverwriteRecycle, _
                    ErrorText:=ErrorText)
    If B = True Then
        MsgBox "Download successful"
    Else
        MsgBox "Download unsuccessful: " & ErrorText
    End If

End Sub

Bonjour,

un exemple

Private Const FTP_TRANSFER_TYPE_UNKNOWN     As Long = 0
Private Const INTERNET_FLAG_RELOAD          As Long = &H80000000

Private Declare Function InternetOpenA Lib "wininet.dll" ( _
    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 InternetConnectA Lib "wininet.dll" ( _
    ByVal hInternetSession As Long, _
    ByVal sServerName As String, _
    ByVal nServerPort As Long, _
    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 FtpGetFileA Lib "wininet.dll" ( _
    ByVal hConnect As Long, _
    ByVal lpszRemoteFile As String, _
    ByVal lpszNewFile As String, _
    ByVal fFailIfExists As Long, _
    ByVal dwFlagsAndAttributes As Long, _
    ByVal dwFlags As Long, _
    ByVal dwContext As Long) As Long

Private Declare Function InternetCloseHandle Lib "wininet" ( _
    ByVal hInet As Long) As Long

Sub FtpDownload(ByVal strRemoteFile As String, ByVal strLocalFile As String, ByVal strHost As String, ByVal lngPort As Long, ByVal strUser As String, ByVal strPass As String)
    'usage
    'FtpDownload "/TEST/test.html", "c:\test.html", "ftp.server.com", 21, "user", "password"
    Dim hOpen   As Long
    Dim hConn   As Long

    hOpen = InternetOpenA("FTPGET", 1, vbNullString, vbNullString, 1)
    hConn = InternetConnectA(hOpen, strHost, lngPort, strUser, strPass, 1, 0, 2)

    If FtpGetFileA(hConn, strRemoteFile, strLocalFile, 1, 0, FTP_TRANSFER_TYPE_UNKNOWN Or INTERNET_FLAG_RELOAD, 0) Then
        Debug.Print "transfert terminé"
    Else
        Debug.Print "échec du transfert"
    End If

    InternetCloseHandle hConn
    InternetCloseHandle hOpen

End Sub

bonjour et merci pour le code.

je ne vois pas ou est l'adresse web et la sauvegarde du fichier au même endroit que le fichier excel?

alors si tu peux m'expliquer ce serait sympa.

Daniel

bonsoir,

voici le code qui utilise la fonction que je t'ai mise à disposition

Sub Get_File_From_FTP()
    Dim URL As String
    Dim LocalFileName As String
    Dim ErrorText As String

    URL = "www.monsite.com"
    LocalFileName = Workbooks(ActiveWorkbook.Name).Path & "\NTC.txt"
    FtpDownload "/BD/NTC.txt", LocalFileName, URL, 21, "user", "password" 'remplacer user et password

End Sub

Bonjour h2so4,

bon c'est pas gagné. j'ai essayé et rien ne marche alors je suis grrrrrrrrrrrrrr.

je sais que ton code marche surement car on ne sort pas une chose pareil sans être un balaise.

donc conclusion c'est moi qui suis très nul (en VBA).

j'ai demandé à un copain de me créer un répertoire sur son site et d'y mettre mon fichier.

donc quand je tape l'adresse qu'il m'a donné dans un navigateur pas de problème j'ai à l'écran le contenu de mon fichier texte sans avoir à entrer le login et mot de passe (car je n'aurais pas accès à ses infos qui sont sensibles).

je dois me débrouiller pour charger le fichier sans login et pass.

j'ai donc utilisé cela avec ton code et la snifffffffffff rien ne se passe.

mais voilà je suis débutant en VBA et je ne comprend rien au code qui est pour moi une usine à gaz.

je sais pas comment l'utiliser : dans un module, autrement. j'ai essayé mais erreurs et quand il n'y a pas d'erreurs et bien rien ne se passe.

dommage car j'ai finalisé le reste du code en ajoutant un tableau de bord afin de sélectionner les options de licences et tout marche à merveille sauf ce fichier que je n'arrive pas à prendre.

j'ai passé ma journée de congés hier à essayé plein de choses du net mais rien ne fonctionne.

alors je sais je suis chiant mais peux tu mettre ton code dans un fichier excel pour voir si cela fonctionne.

voici l'adresse du fichier txt pour les essais bien sure l'adresse définitive seras sur le site de formation :

donc voir si l'on charge bien le fichier dans le même répertoire que le fichier excel.

tu vas me dire "il faut lui mâcher le travail" et tu as raison mais voila avec toute la volonté du monde pas moyen.

donc si tu peux faire quelque chose je serais aux anges mais si tu ne veux pas t'inquiète je comprendrais.

encore mille mercis,

bonne journée,

Daniel

bonsoir,

ceci fonctionne chez moi

Sub aargh()
    DownloadDir$ = "/Licences/"
    DownloadFile$ = "NTC-OK.txt"
    URL$ = "http://reelargent.eu" & DownloadDir & DownloadFile
    LocalFileName$ = ThisWorkbook.Path & "/" & DownloadFile
    Set r = CreateObject("Microsoft.XMLHTTP")
    r.Open "GET", URL, False
    r.send
    If r.Status = 200 Then
        Set f = CreateObject("ADODB.Stream")
        f.Open
        f.Type = 1
        f.Write r.responseBody
        f.SaveToFile LocalFileName, 2
        of.Close
    End If
End Sub

Bonjour,

yes cela fonctionne alors un grand merci

Daniel

Hello,

Si j'ai bien compris c'est le script pour télécharger ...

Mais pouvez-vous également fournir le code pour déposer un fichier sur le FTP s'il vous plaît ?

Merci

bonjour,

voici une macro de creation et d'exécution d'un script de transfert d'un fichier vers un site FTP

Sub filetoFTP()
    server = "ftp.site.com"    ' à adapter
    ID = "moi"    'user
    pwd = "pwd"    'password
    repcible = "/repertoire"    ' répertoire cible sur server FTP
    fat = "d:\documents\mydoc.doc"    'fichier à transférer
    chemin = "d:\downloads\" 'répertoire pour script et log
    fn = chemin & "ScriptFTP.txt"
    fnlog=chemin & "ScriptFTPlog.txt"
    Open fn For Output As #1
    Print #1, "open " & server
    Print #1, ID
    Print #1, pwd
    Print #1, "cd " & repcible
    Print #1, "put " & Chr(34) & fat & Chr(34)
    Print #1, "quit"
    Close #1
    Shell "cmd /c C:\WINDOWS\system32\ftp.exe -i -s:" & fn & " >" & fnlog, vbNormalFocus
End Sub

Bonjour H2SO4 ...

Je développe un serveur (sur pi) sur lequel je veux me programmer une sauvegarde incrémentielle.

Que mets-tu dans ScriptFTP.txt pour envoyer le fichier local vers le serveur ?

Bonjour Steelson,

J'y connais absolument rien en réseaux et serveurs, mais j'sais qu'les signaux d'fumée sont visibles de très loin ! ugh !

image

dhany

Bonsoir Steelson,

Steelson le magnifique a écrit :

Que mets-tu dans ScriptFTP.txt pour envoyer le fichier local vers le serveur ?

j'y mets des commandes pour le client FTP standard disponible sous windows.

voici un exemple de fichier généré par la macro qui précède.

si tu ouvres une boite de commande et que tu tapes FTP, tu recevras l'invite ftp>, si tu tapes help, tu auras la liste de commandes possibles.

si tu tapes ftp /? à l'invite DOS c:\>, tu auras l'aide sur les paramètres possibles pour la commande FTP.

26scriptftp.txt (81.00 Octets)

merci

je ne connaissais pas du tout !

je vais tester tout cela ...

Wahou, cela fonctionne du feu de Dieu !! MAIS j'ai mis du temps à m'apercevoir de ce blocage (d'autant que je n'ai pas eu de fichier log) :

ftp excel defender

Bonjour Steelson,

Tu a écrit :

Wahou, cela fonctionne du feu de Dieu !!

Pour info : le feu de Dieu est sacré ! le feu du dessin humoristique de mon précédent message était seulement profane : il n'avait rien de sacré ! (même si le message transmis par les signaux de fumée était très difficilement décryptable pour un non-initié).

dhany

Ajout pour Steelson :

Le feu de l'Inca aussi est redoutable ! c'est un coup à finir sur le bûcher du Grand Prêtre Huascar, et j'peux pas t'garantir qu'une éclipse va pouvoir te sauver : les RV du Soleil avec la Lune sont pas monnaie courante ! mais si la solution d'h2so4 fonctionne du feu de Dieu, c'est l'essentiel !!! (amen )

screen

réponse : du droit que Steelson peut commander au Soleil (si, si, lui aussi ! et lui aussi aura droit à un lama dont les sacoches sont bourrées à ras bord de pierres précieuses : il va être super super archi extra riche !!! dis, tu partages avec moi ? )

dhany

Excellent, du reste je viens de finir la lecture de :

32335509 uy630 sr1200 630

les RV du Soleil avec la Lune sont pas monnaie courante

absolument ... et même avec l'ombre des pyramides ... Thalès (de Milet) mesura la pyramide de Khéops. Or cela n’a pas pu se passer en été car à Gizeh, à 30° de latitude dans l’hémisphère nord, là où se trouve la pyramide de Khéops juste au-dessus du tropique, les rayons sont presque verticaux à midi. Il n’y aurait donc pas eu d’ombre ! Selon les astronomes, la mesure de Thalès n’a pu être effectuée que le 21 novembre ou le 20 janvier pour que l’ombre soit de même longueur que l’objet à midi.

CQFD

@Steelson, réponse à ton message d'hier à 11:27

Comme ton livre "Le premier miracle" est un roman autour du manuscrit ésotérique

"Splendor Solis" (= Les Splendeurs du Soleil), tu seras peut-être intéressé par ce livre

(qui existe en plusieurs éditions) :

screen 1

si tu te demandes ce que c'est, en voici un aperçu :

screen 2

maintenant, voici la Porte des Grands Anciens :

screen 3

sache que quiconque la franchit le fait au péril de sa vie !

dhany

@Steelson, réponse à ton message d'hier à 11:35

J'comprends d'autant mieux c'que t'as écrit sur les pyramides, leur ombre, et les mesures prises

par Thalès (de Milet) qu'j'avais lu ce texte auparavant (texte qui est tiré du journal Libération) :

screen 1

re-CQFD

dhany

Rechercher des sujets similaires à "ftp"