cs_onha
Messages postés27Date d'inscriptionmercredi 26 décembre 2001StatutMembreDernière intervention 4 mars 2019
-
7 mars 2013 à 13:09
cs_onha
Messages postés27Date d'inscriptionmercredi 26 décembre 2001StatutMembreDernière intervention 4 mars 2019
-
28 mars 2013 à 15:22
Bonjour a vous tous
Excel 2010
J'utilise le script ci dessous pour récupérer un fichier qui ce trouve sur un serveur.
Le transfert fonctionne parfaitement, la seule chose c'est que je suis obligé de quitter Excel à chaque fois que je veux récupérer le meme fichier qui a été modifier.
Cette même macro fonctionne parfaitement sous un excel 2003 et je ne suis pas obligé de quitter excel pour récupérer le fichier.
J'ai cherché sur la toile mais je n'ai pas trouvé.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 7 mars 2013 à 13:16
Bonjour,
J'utilise le script ci dessous
Sacrément bien caché, ce fameux script !
la seule chose c'est que je suis obligé de quitter Excel à chaque fois que je veux récupérer le meme fichier qui a été modifier.
Mais tu n'es pas ici dans la section adéquate (Langages dérivés > VBA), mais dans la section :
Forum > Visual Basic 6
Qui n'a rien à voir avec VBA
Je vais donc personnellement apporter à ta réponse, le même "soin" que toi, à ta demande : J'attendrai :
- qu'un administrateur bienveillant ait bien voulu déplacer ta discussion
- que tu aies "bien voulu" (!) présenter ici la portion de code qui pose problème !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
cs_onha
Messages postés27Date d'inscriptionmercredi 26 décembre 2001StatutMembreDernière intervention 4 mars 2019 7 mars 2013 à 13:34
oups voici le fameu script
Declare PtrSafe 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 PtrSafe 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 PtrSafe Function FtpSetCurrentDirectory Lib "wininet.dll" Alias _
"FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
ByVal lpszDirectory As String) As Boolean
Declare PtrSafe 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
dans le sub
'Récupération du PRN
Internet_OK = InternetOpen("", 1, "", "", 0)
If Internet_OK Then
FTP_OK = InternetConnect(Internet_OK, "xxx.xxx.xxx.xxx", 21, "login", "mdp", 1, 0, 0)
If FtpSetCurrentDirectory(FTP_OK, "/") Then
succès = FtpGetFile(FTP_OK, "DAS002.PRN", "c:\adpprn\DAS002.PRN", False, 0, &H0, 0)
End If
End If
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 7 mars 2013 à 14:34
Je ne vois absolument rien qui, dans le code montré, réagirait différemment sous VBA 2003 et vba 2007 ! VBA n'y est même à aucun moment sollicité ! >>Seules le sont des fonctions de l'Api de Windows.
Ton problème est donc totalement ailleurs.
Mais j'attendrai, pour continuer, que cette diçscussion soit déplacée dans la section adéquate.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 7 mars 2013 à 16:55
Si tu veux supprimer le fichier du serveur ftp ===>> fonction FtpDeleteFile
Il me semble surtout que tu n'as pas fermé la connexion ouverte (InternetCloseHandle)
Mais relis donc mon dernier message. Je n'irai pas plus loin dans cette attente.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 8 mars 2013 à 10:38
Ecoute :
vraiment rien à voir avec la différence de versions de Excel, sur ce bout de code montré.
C'est donc ailleurs qu'il faut en chercher la cause, qui est peut-être un autre OS, mieux protégé.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
cs_onha
Messages postés27Date d'inscriptionmercredi 26 décembre 2001StatutMembreDernière intervention 4 mars 2019 28 mars 2013 à 15:22
Bonjour,
Après avoir effectué quelque recherche sur le net et sur ma machine
Je me suis rendu compte que lors du transfert ftp le système me crée une copie du fichier que je transfert et le met sous C:\Users"user"\AppData\Local\Microsoft\Windows\Temporary Internet Files
N'aurait il pas une possibilité de ne pas effectuer de copie en temp ?
Je mets ci-dessous le nouveau code que j'utilise
Private Declare Function InternetCloseHandle Lib "wininet.dll" _
(ByVal hInet As Long) As Integer
Private 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
Private 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
Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias _
"FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, _
ByVal lpszDirectory As String) As Boolean
Private 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
Private Declare Function FtpPutFile Lib "wininet.dll" Alias _
"FtpPutFileA" (ByVal hConnect As Long, ByVal lpszLocalFile As String, _
ByVal lpszNewRemoteFile As String, ByVal dwFlags As Long, _
ByVal dwContext As Long) As Boolean
sub recupftp()
Dim HwndConnect As Long
Dim HwndOpen As Long
'Ouvre internet
HwndOpen = InternetOpen("SiteWeb", 0, vbNullString, vbNullString, 0)
'Connection au site ftp
HwndConnect = InternetConnect(HwndOpen, "10.26.2.18", 21, "recup0", "recup0", 1, 0, 0)
'positionnement du curseur dans le répertoire
FtpSetCurrentDirectory HwndConnect, "/"
'Téléchargement de test.txt
FtpGetFile HwndConnect, "DAS005.PRN", "c:\adpprn\DAS005.PRN", False, 0, &H0, 0
InternetCloseHandle HwndConnect 'Ferme la connection
InternetCloseHandle HwndOpen 'Ferme internet