[Déplacé VB6 --> VBA] ftpgetfile: problème avec les accents
Germouse
Messages postés12Date d'inscriptionvendredi 15 janvier 2010StatutMembreDernière intervention25 août 2010
-
15 janv. 2010 à 11:26
Germouse
Messages postés12Date d'inscriptionvendredi 15 janvier 2010StatutMembreDernière intervention25 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!
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
Germouse
Messages postés12Date d'inscriptionvendredi 15 janvier 2010StatutMembreDernière intervention25 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?