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

Germouse Messages postés 12 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 25 août 2010 - 15 janv. 2010 à 11:26
Germouse Messages postés 12 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 25 août 2010 - 21 janv. 2010 à 12:35
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!

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
15 janv. 2010 à 13:08
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)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
15 janv. 2010 à 13:13
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
0
Germouse Messages postés 12 Date d'inscription vendredi 15 janvier 2010 Statut Membre Dernière intervention 25 août 2010
21 janv. 2010 à 12:35
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!
0
Rejoignez-nous