IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Petit souci avec FtpGetFile


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Par défaut Petit souci avec FtpGetFile
    Voilà, j'ai codé une macro pour exécuter des transferts FTP...
    J'arrive parfaitement à envoyer un fichier (FtpPutFile) vers le répertoire du serveur ftp mais impossible de récupérer quoi que ce soit.

    voilà mon code (je vous passe les déclaration des API et des constantes)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    Sub mettreAJour() 
        Dim InternetOK
        Dim FtpOK
        Dim FtpServeur
        Dim FtpLogin
        Dim FtpPass
        Dim DossierLocal
        Dim DossierDistant
        Dim Result
        Dim Internet_OK
        Dim FTP_OK
        Dim Select_DossierDistant
        Dim fichierlocal
        Dim FichierDistant
        Dim succès As Boolean
        Dim i As Integer
     
        succès = False
     
        DossierDistant = ThisWorkbook.Worksheets("Envoi FTP").Cells(7, 2).Value
     
        FtpServeur = ThisWorkbook.Worksheets("Envoi FTP").Cells(2, 2).Value
     
        FtpLogin = ThisWorkbook.Worksheets("Envoi FTP").Cells(3, 2).Value
     
        FtpPass = ThisWorkbook.Worksheets("Envoi FTP").Cells(4, 2).Value
     
        'affichage fenêtre d'attente pendant le transfert
     
        Application.Cursor = xlWait 'affiche le sablier
     
        Waitbox.Show vbModeless 'affiche la waitbox mais continue le traitement
     
        'Vérifier la connection à internet
        InternetOK = InternetOpen("PutFtpFile", 0, "", "", 0)
     
        If InternetOK = 0 Then
          MsgBox "connection internet impossible"
        GoTo fin
     
        End If
     
        'Vérifier l'accès ftp
        FtpOK = InternetConnect(InternetOK, FtpServeur, 21, FtpLogin, FtpPass, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0)
     
        MsgBox ("connection FTP " & " serveur : " & FtpServeur & " login : " & FtpLogin & " mdp : " & FtpPass)
     
        If FtpOK = 0 Then
     
        MsgBox "connection FTP impossible"
        ' à utiliser en mode débogage
        'MsgBox ("connection FTP impossible " & " serveur : " & FtpServeur & " login : " & FtpLogin & " mdp : " & FtpPass)
        GoTo fin
     
        End If
     
     
        'vérifier le dossier distant
        Select_DossierDistant = FtpSetCurrentDirectory(FtpOK, DossierDistant)
        If Select_DossierDistant = 0 Then
        MsgBox "impossible de trouver le répertoire distant "
        GoTo fin
        End If
     
        MsgBox "dossier : " & DossierDistant
     
       ' récupération de l'adresse de travail
        cheminFichierSortie = ActiveWorkbook.Path
     
        Dim liste_fichier(7) As String
     
        'test
        'succès = FtpPutFile(FtpOK, cheminFichierSortie & "\" & "test.xls", "test.xls", FTP_TRANSFER_TYPE_ASCII, 0)
        'If succès Then
        'Result = "Le fichier test.xls a été correctement envoyé "
        'MsgBox Result
        'Else
        'Result = "Erreur FTP : le fichier test.xls n'a pas pu être envoyé."
        'MsgBox Result
        'End If
     
        For i = 1 To 7
        'récupération des adresses des fichiers à récupérer sur le serveur
        liste_fichier(i) = ThisWorkbook.Worksheets("Envoi FTP").Cells(10 + i, 1).Value
     
        fichierlocal = cheminFichierSortie & "\" & liste_fichier(i)
        FichierDistant = liste_fichier(i)
     
        MsgBox "fichier local : " & fichierlocal
        MsgBox "fichier distant : " & FichierDistant
     
        'transfert du fichier
        succès = FtpGetFile(FtpOK, FichierDistant, fichierlocal, False, 0, FTP_TRANSFER_TYPE_ASCII, 0)
     
        'fin affichage fenêtre d'attente
        Waitbox.Hide 'masque la waitbox
     
        Application.Cursor = xlDefault 'remet le curseur par défaut
     
        If succès Then
        Result = "Le fichier " & FichierDistant & " a été correctement récupéré "
        MsgBox Result
     
        Else
        Result = "Erreur FTP : le fichier " & FichierDistant & " n'a pas pu être récupéré."
        MsgBox Result
        ShowError ("GetFile: " & FichierDistant)
        GoTo fin
        End If
     
        Next
     
    fin:
     
        'fermer les pointeurs, ménage
        InternetCloseHandle FTP_OK
        InternetCloseHandle Internet_OK
     
    [...]
    Pour info avec les même paramètres le FTP fonctionne très bien si je le fais via filezilla ou un autre outil.

    voilà le message d'erreur que je récupère

    Server Response :
    200 Type Set to A
    227 Entering Passive Mode (10,92,80,74,241,41)
    500 'SIZE ???????' : command not understood
    550 ??????? No such file or Directory
    Si quelqu'un y voit plus clair que moi... je suis preneur de toute info.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2005
    Messages
    250
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2005
    Messages : 250
    Par défaut
    Bon j'ai trouvé...

    le problème venait d'une mauvaise déclaration de l'API

    j'avais mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileW" ( _
         ByVal hConnect As Long, _
         ByVal lpszRemoteFile As String, _
         ByVal lpszNewFile As String, _
         ByVal fFailIfExists As Boolean, _
         ByVal dwFlagsAndAttributes As Long, _
         ByVal dwFlags As Long, _
         ByVal dwContext As Long) As Boolean
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Declare Function FtpGetFile Lib "wininet.dll" Alias "FtpGetFileA" ( _
         ByVal hConnect As Long, _
         ByVal lpszRemoteFile As String, _
         ByVal lpszNewFile As String, _
         ByVal fFailIfExists As Boolean, _
         ByVal dwFlagsAndAttributes As Long, _
         ByVal dwFlags As Long, _
         ByVal dwContext As Long) As Boolean
    Un peu vert d'avoir perdu 10h là dessus mais tout fini bien...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. petit soucis avec mon graveur
    Par Vador dans le forum Périphériques
    Réponses: 8
    Dernier message: 02/11/2005, 14h58
  2. petit soucis avec les listes
    Par Death83 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/09/2005, 10h08
  3. Petit souci avec clause where
    Par ybruant dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2005, 22h10
  4. petit souci avec des variables avec des fonctions psql
    Par dust62 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/04/2005, 13h45
  5. [DEBUTANT] petits soucis avec un prgm de chat
    Par LechucK dans le forum MFC
    Réponses: 8
    Dernier message: 19/01/2004, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo