[Déplacé VB6 --> VBA] ftpgetfile: problème avec les accents

Signaler
Messages postés
12
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
25 août 2010
-
Messages postés
12
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
25 août 2010
-
Bonjour,

J'utilise la commande ftpgetfile sur une macro Excel pour chercher un fichier sur mon serveur ftp. Mais si le nom de ce fichier comporte un accent, il ne le trouve pas (encodage de caractère Iso-8859-1). Avez-vous une solution de code VBA pour que les accents soient pris en compte? D'avance merci!
A voir également:

3 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
Je viens de faire l'essai en utilisant le code exemple fourni avec les explications de l'API 'FtpGetFile' de http://logiciel.codes-sources.com/logiciels/API-Guide-197.aspx et je n'ai aucun problème avec les accents.
Mon Windows est un XP-SP3 FR
Mon serveur FTP est un NAS (au travers d'internet) avec un logiciel FTP open source (je n'ai plus le nom en tête)
J'ai refait le même essai sur un XP en US : Fonctionne correctement.

Je pense que c'est côté serveur FTP et de son langage qu'il faut se pencher.
Eventuellement, colle-nous le code que tu as utilisé (avec colorisation syntaxique = 3ème icone à partir de la droite)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
perso, moi, mon NAS QNAP TS409 n'aime pas les accents non plus...

obligé d'aller renomer les fichiers via telnet avant de pouvoir jouer avec en FTP

Renfield - Admin CodeS-SourceS - MVP Visual Basic
Messages postés
12
Date d'inscription
vendredi 15 janvier 2010
Statut
Membre
Dernière intervention
25 août 2010

Un grand merci pour votre réponse trés rapide.

Voici mon code:
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 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 FtpSetCurrentDirectory Lib "wininet.dll" Alias _
"FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
ByVal lpszDirectory As String) As Boolean
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

Sub cherche()
Dim Nom As String
Dim chemin As String

Nom = ActiveCell.Value + ".xls"
chemin = "C:\dossier1" + Nom

internet_ok = InternetOpen("", 1, "", "", 0)
If internet_ok Then
ftp_ok = InternetConnect(internet_ok, "serveur.com", 21, "login", "motdepasse", 1, 0, 0)
If FtpSetCurrentDirectory(ftp_ok, "/dossier2") Then
succès = FtpGetFile(ftp_ok, Nom, chemin, False, 0, &H0, 0)
End If

End If

If succès = False Then MsgBox ("le fichier '" + Nom + "' n'a pas été trouvé!")

If succès Then
Workbooks.Open Filename:=chemin
End If


End Sub

Mais alors j'ai un nouveau problème: Ftpgetfile marche quand je suis connecté depuis mon bureau (succès = True) mais pas quand je me connecte depuis un autre (succès=false). Avez-vous des éléments de réponse?

Merci!