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 :

Récupérer fichier .csv sur serveur ftp


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Chef de projet
    Inscrit en
    Septembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Septembre 2017
    Messages : 2
    Par défaut Récupérer fichier .csv sur serveur ftp
    Bonjour,

    Après avoir étudié le tuto se trouvant dans la FAQ pour récupérer un fichier sur un serveur ftp, j'ai toujours quelques soucis pour réaliser cette macro.

    Ci-dessous ce que j'ai utilisé :

    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
     
    '-------------------
    'Déclaration des API
    '-------------------
    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
     
     
    'Réception d'un fichier
    Private Sub recupfichierintegracsv()
     
    Dim HwndConnect As Long
    Dim HwndOpen As Long
    'Ouvre internet
    HwndOpen = InternetOpen("SiteWeb", 0, vbNullString, vbNullString, 0)
    'Connection au site ftp
    HwndConnect = InternetConnect(HwndOpen, "adresse du ftp", 21, _
      "nom d’utilisateur", "mot de passe", 1, 0, 0)
    'positionnement du curseur dans le répertoire
    FtpSetCurrentDirectory HwndConnect, "/Cognex"
    'Téléchargement de Integra.csv
    FtpGetFile HwndConnect, "Integra.csv", "C:\WINDOWS\Bureau\Integra.csv", _
      False, 0, &H0, 0
     
     
    InternetCloseHandle HwndConnect 'Ferme la connection
    InternetCloseHandle HwndOpen 'Ferme internet
    End Sub

    J'ai bien évidemment remplacé les zones 'adresse du ftp', 'nom d'utilisateur' et 'mot de passe' par mes données professionnelles.

    Pour le moment, mon souci est le suivant :

    Une fois mon module créé dans VBA, je ne le vois pas dans Excel (alors que j'ai déjà créé d'autres macros qui fonctionnent). j'ai l'impression que cela vient de la déclaration des API.

    Si je garde uniquement la partie macro à partir de 'réception d'un fichier' je vois la macro dans excel (mais elle ne fonctionne pas ==> message d’erreur ‘sub ou function non définie pour la partie 'InternetOpen').

    Si je remets la partie du haut pour ‘déclarer les api’, la macro n’apparait plus dans excel.

    SI j'ai bien compris, sans cette déclaration la macro ne peut pas fonctionner, du coup je tourne en rond. (j’ai essayé de les mettre ailleurs dans le texte, mais du coup j’ai des messages d’erreur).

    Pouvez-vous m'aider ?

    Merci
    Mélange

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    conformément aux règles du forum, merci de baliser le code via l'icône dédiée à cet effet !
    Ainsi un éventuel intervenant pourra faire référence à un numéro de ligne de code …

    Créer un nouveau module et y placer le code; toute déclaration devant être en en-tête (cf aide VBA interne et tutoriel).

    Ne pas hésiter à utiliser le mode pas à pas (via la touche F8) pour suivre la progression du code
    et le contenu de la fenêtre Variables locales (là aussi cf tutoriel) …

    ___________________________________________________________________________________________________________
    Je suis Paris, Barcelone, London, Manchester, Egypte, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Nouveau candidat au Club
    Femme Profil pro
    Chef de projet
    Inscrit en
    Septembre 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Septembre 2017
    Messages : 2
    Par défaut
    Bonjour,

    Merci.
    J'ai modifié mon message initial.

    J'ai en effet créé un nouveau module et copié le code tel qu'il est dans mon premier message, avec la déclaration en en-tête.

    Si j'enlève le terme 'private' de la ligne 35, j'arrive à voir ma macro et à l'affecter.
    Par contre elle ne fonctionne pas, je suis encore en recherche pour voir ce qui bloque.

    Mélange

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Une fois la procédure affectée à un bouton, elle peut de nouveau être qualifiée en Private si vraiment nécessaire,
    les habitués pouvant l'effectuer directement manuellement …

Discussions similaires

  1. Importer fichier stocké sur serveur FTP
    Par Daniel MOREAU dans le forum Windows
    Réponses: 14
    Dernier message: 15/04/2014, 17h36
  2. Macro pour depot D'un Fichier CSV sur fileZilla FTP Client
    Par Sk_ca dans le forum Général VBA
    Réponses: 1
    Dernier message: 23/10/2012, 12h02
  3. Récupérer automatiquement un fichier .csv sur serveur FTP
    Par oagi_jaheim dans le forum Général Conception Web
    Réponses: 1
    Dernier message: 13/09/2009, 18h19
  4. afficher les fichiers stockés sur serveur ftp
    Par stagolee dans le forum Hébergement
    Réponses: 2
    Dernier message: 27/11/2007, 18h41
  5. [FTP] Gestion fichier PHP sur serveur FTP
    Par cdrik59 dans le forum Langage
    Réponses: 1
    Dernier message: 08/12/2006, 16h00

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