Bonjour, je rencontre des difficultés avec une sauvegarde de fichier sur serveur ftp pilotée par code VBA sous access : le principe utilisé est de lancer un batch qui se connecte, accède au bon répertoire sur le serveur, et dépose le fichier.

En code VBA :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
On Error GoTo Error_Handler
' The scr file will contain the FTP commands (If it exists from previous run, delete it)
    sFtpFile = txtTmpDir & "\" & "copieFTP.scr"
    If Dir(sFtpFile) <> "" Then Kill sFtpFile
    sBatFile = txtTmpDir & "\" & "copieFTP.bat"
    If Dir(sBatFile) <> "" Then Kill sBatFile
' Open a new text file to hold the FTP script and load it with the appropriate commands.
    iFile = FreeFile
    Open sFtpFile For Output As iFile
    Print #iFile, "open " & getAppParam("BackupFTP")
    Print #iFile, getAppParam("BackupUser")
    Print #iFile, getAppParam("BackupPW")
    Print #iFile, "cd " & getAppParam("FTPBackup")
    Print #iFile, "binary"
    Print #iFile, "put " & txtZipFile
    Print #iFile, "bye"
    Close #iFile
' create a new vbs script to notify the end of the export with the appropriate commands.
    iFile = FreeFile
    sVBSFile = txtTmpDir & "\" & "MsgFinSauvegarde.vbs"
    If Dir(sVBSFile) <> "" Then Kill sVBSFile
    Open sVBSFile For Output As iFile
    Print #iFile, "msgbox ""Sauvegarde envoyée."""
    Close #iFile
' Open a new text file to hold the bat script and load it with the appropriate commands.
    iFile = FreeFile
    Open sBatFile For Output As iFile
    Print #iFile, "ftp.exe -s:" & q & sFtpFile & q
    Print #iFile, sVBSFile
    Close #iFile
    Shell (sBatFile)
'terminé
    txtBackup = txtBackup & "Fichier zip envoyé au serveur. "
    Exit Function
C'est un peu rustique, mais la fenêtre du batch permet de voir un peu ce qui se passe (pas encore essayé les méthodes "inet" vues ici et là).

Le comportement est un peu surprenant :
- chez moi, aucun souci.
- au bureau de l'association qui gère ses membres sous access, le processus ne se déroule pas correctement : connexion au serveur, identifiant, mot de passe : ok... passage au répertoire : ok. écriture fichier zippé ("put " & txtZipFile) : could not open port 5xx xxx. Au final : le fichier est bien créé sur le serveur, avec une taille égale à 0ko.

La neufbox de l'association a récemment lâché. J'ai pensé à un problème de configuration de la nouvelle (mais à domicile, je n'ai rien configuré de spécial sur ma freebox...). Essayé d'ouvrir le port récalcitrant en configurant la box. La fois suivante, c'est un autre 5xx yyy qu'il essaie d'ouvrir. Bon...

Sous Firefox, utilisé FireFTP. Je m'attendais à voir un message d'erreur... et le fichier a été transféré comme une fleur. Pas d'indication de souci, pas de nouvelle piste.

Je suis égaré : problème de code et de sensibilité de configuration PC ? (mais ça marchait avant le changement de box). Pb de box ? (mais pourquoi un transfert sous FireFTP fonctionne-t-il, et pas celui lancé par le code VBA ?). Très certainement, ce problème prend surtout sa source dans l'ignorance du rédacteur de cette question. Une aide serait-elle possible ? Merci.