Transfert de fichier

Messages postés
29
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
4 mars 2019
- - Dernière réponse : cs_onha
Messages postés
29
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Derniè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é.

Merci pour votre aide

Onha
Afficher la suite 

9 réponses

Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
29
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
4 mars 2019
0
Merci
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

Onha
Commenter la réponse de cs_onha
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
29
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
4 mars 2019
0
Merci
Merci pour la réponse est ce qu'il ne faudrait pas vider une mémoire quelconque.

Onha
Commenter la réponse de cs_onha
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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.
Commenter la réponse de ucfoutu
Commenter la réponse de fahmisidaoui
Messages postés
29
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
4 mars 2019
0
Merci
Je viens de modifier le script rajout de la fermeture de la connexion.

J'ai également après récupération du fichier, utiliser la fonction ftpdeletefile et malgrés tout il me récupère le premier fichier téléchargé

Onha
Commenter la réponse de cs_onha
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
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.
Commenter la réponse de ucfoutu
Messages postés
29
Date d'inscription
mercredi 26 décembre 2001
Statut
Membre
Dernière intervention
4 mars 2019
0
Merci
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

end sub


Onha
Commenter la réponse de cs_onha