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 :

Transfert csv vers ftp en vba Excel [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    J'ai créé un programme Excel en VBA pour pouvoir envoyer des fichiers CSV vers un site en ftp, et créer des arborescence windows de sauvegarde. Ce deuxième point est fait et fonctionne, cependant je ne trouve pas de code stable pour envoyer des fichiers csv vers un site ftp.

    Quelqu'un pourrait-il me donner le code pour faire cette opération et me l'expliquer ? Malgré mes recherches, je n'ai pas trouvé de code fonctionnant sur mon ordinateur.

    J'ai essayé d'utiliser le code fournit à l'adresse suivante :
    http://access.developpez.com/sources...hiers#EnvoiFTP

    Mais il ne fonctionne pas (plusieurs doute possibles : port, user et mdp ; ou bien il ne fonctionne pas dans ce cas. Je précise que le ftp que j'utilise n'a pas de user ni de mdp requis, et je ne connais pas son port.)

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour,test ça
    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
    Public Function GoOn()
        'Path and Name of file to FTP
        Dim strPath
        Dim strFileName
        Dim ftpServer
        Dim strUserName
        Dim strPassword
        Dim RepSever
        Dim ExpWin
        GoOn = False
        Set ExpWin = New clsWindowsExporer
        strPath = "c:\DezipFtp\"
        ExpWin.Creer_Repertoires strPath
        strFileName = strPath & "test.csv"
     
    '    FTP Server Settings
        ftpServer = "Test.fr"
        strUserName = "Testr"
        strPassword = "123456789"
        RepSever = "/ftp-Test/MyRep/Test"
     
    '    Exécution des commandes FTP :/TestFtpRd
       GoOn = FTP_Data(strPath, strFileName, ftpServer, strUserName, strPassword, RepSever)
     
       ExpWin.Supprimer_Fichier strPath & "StartFtpOk.txt"
    End Function
     
    'Permet de temporiser le traitement pour attendre la fin de l'exécution  d'une tache :
    Sub Tempo(T, F)
        Dim d
        Dim a
        d = Now
        a = 0
        While DateDiff(F, d, Now) < T
            a = a + 1
        Wend
    End Sub
    Function FTP_Data(strPath, strFileName, ftpServer, strUserName, strPassword, RepSever)
     
    Dim pFile
    Dim ExpWin
    Set ExpWin = New clsWindowsExporer
     
     FTP_Data = False
     
    'Création de la commande d'exécution de récupération du fichier (eclenchement.txt)
    ExpWin.Supprimer_Fichier strPath & "FTP_cmd_Get.txt"
    ExpWin.FichierLog strPath & "FTP_cmd_Get.txt", "user" & vbCrLf
    ExpWin.FichierLog strPath & "FTP_cmd_Get.txt", strUserName & vbCrLf
    ExpWin.FichierLog strPath & "FTP_cmd_Get.txt", strPassword & vbCrLf
    ExpWin.FichierLog strPath & "FTP_cmd_Get.txt", "CD " & RepSever & vbCrLf
    ExpWin.FichierLog strPath & "FTP_cmd_Get.txt", "Get " & strFileName & " " & strPath & strFileName & vbCrLf
    ExpWin.FichierLog strPath & "FTP_cmd_Get.txt", "Close" & vbCrLf
    ExpWin.FichierLog strPath & "FTP_cmd_Get.txt", "quit" & vbCrLf
     
    'Création du fichier Bat de réception FTP
    ExpWin.Supprimer_Fichier strPath & "FTP_Run_Get.bat"
    ExpWin.FichierLog strPath & "FTP_Run_Get.bat", "ftp -n -s:" & Chr(34) & strPath & "FTP_cmd_Get.txt" & Chr(34) & Space(1) & ftpServer & vbCrLf
    ExpWin.FichierLog strPath & "FTP_Run_Get.bat", "Del " & strPath & "Go.txt" & vbCrLf
     
    'Execute FTP command
    Dim Shell
    Set Shell = WScript.CreateObject("WScript.Shell")
    Shell.Run (strPath & "FTP_Run_Get.bat")
     
    TesteFichier strPath & "FTP_cmd.txt", False
    'Création de la commande d'exécution de d'envoi des fichiers vers le serveur FTM (eclenchement.txt, dump_ibis.mdb)
    ExpWin.Supprimer_Fichier strPath & "FTP_cmd_Put.txt"
    ExpWin.FichierLog strPath & "FTP_cmd_Put.txt", "user" & vbCrLf
    ExpWin.FichierLog strPath & "FTP_cmd_Put.txt", strUserName & vbCrLf
    ExpWin.FichierLog strPath & "FTP_cmd_Put.txt", strPassword & vbCrLf
    ExpWin.FichierLog strPath & "FTP_cmd_Put.txt", "CD " & RepSever & vbCrLf
    ExpWin.FichierLog strPath & "FTP_cmd_Put.txt", "Put " & Chr(34) & strFileName & Chr(34) & vbCrLf
    ExpWin.FichierLog strPath & "FTP_cmd_Put.txt", "Close" & vbCrLf
    ExpWin.FichierLog strPath & "FTP_cmd_Put.txt", "quit" & vbCrLf
     
    'Création du fichier Bat de réception FTP
    ExpWin.Supprimer_Fichier strPath & "FTP_Run_Get.bat"
    ExpWin.FichierLog strPath & "FTP_Run_Get.Put", "ftp -n -s:" & Chr(34) & strPath & "FTP_cmd_Put.txt" & Chr(34) & Space(1) & ftpServer & vbCrLf
     
    'Execute FTP command
    Set Shell = WScript.CreateObject("WScript.Shell")
    Shell.Run (strPath & "FTP_Run_Put.bat")
    Set Shell = Nothing
    End Function
    Code Module de classe clsWindowsExporer : 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
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    'Permet de vérifier si le répertoire dont le nom est précisé en paramètre (Repertoires) existe. Retourne True s'il existe, sinon False
    Public Function Repertoires_Existe(Repertoires)
    Dim Fso 'As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Repertoires_Existe = Fso.FolderExists(Repertoires)
    Set Fso = Nothing
    End Function
    'Taille d'un répertoire
    Public Function Taille_Repertoire(Repertoire)
     
    Dim Fso ' As Object
    Dim Rep ' As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")
        Set Rep = Fso.GetFolder(Repertoire)
        Taille_Repertoire = Rep.Size
    End Function
    'Crée un répertoire, dont l'emplacement et le nom sont précisé par le chemin d'accès complet précisé en argument (NewRepertoires).
    Public Sub Creer_Repertoires(NewRepertoires)
    Dim Fso ' As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Dim T
    Dim R ' As String
    Dim I ' As Long
    R = ""
    T = Split(NewRepertoires & "\", "\")
    For I = 0 To UBound(T)
        If Trim("" & T(I)) <> "" Then
            R = R & Trim("" & T(I)) & "\"
            If Repertoires_Existe(R) = False Then Fso.CreateFolder R
        End If
    Next
    Set Fso = Nothing
    End Sub
     
    'Copie un répertoire, ainsi que tous les fichiers et sous-répertoires qu'il contient, d'une source vers une destination.
    Public Sub Copie_Repertoires(Source, Destination)
    Dim Fso ' As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Fso.CopyFolder Source, Destination, True
    Set Fso = Nothing
    End Sub
     
    'Déplace un ou plusieurs répertoire d'un emplacement source vers une destination.
    Public Sub Deplace_Repertoire(Source, Destination)
    Dim Fso ' As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Fso.MoveFolder Source, Destination
    Set Fso = Nothing
    End Sub
     
    'Permet de supprimer un répertoire et tous les fichiers et sous-répertoires qu'il contient.
    Public Sub Supprimer_Repertoire(DelRepertoire)
    Dim Fso ' As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Fso.DeleteFolder DelRepertoire, True
    Set Fso = Nothing
    End Sub
    'Taille d'un répertoire
    Public Function Taille_Fichier(Fichier)
    Dim Fso ' As Object
    Dim Fich ' As Object
    If Fichier_Exist("" & Fichier) = False Then Taille_Fichier = 0: Exit Function
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set Fich = Fso.GetFile(Fichier)
        Taille_Fichier = Fich.Size
    End Function
    'Vérifie lexistance d'un   fichier
    Public Function Fichier_Exist(Fichier)
    Dim Fso ' As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Fichier_Exist = Fso.FileExists(Fichier)
    Set Fso = Nothing
    End Function
    'Retourne le nom du fichier, à partir du chemin d'accès complet précisé en paramètre.
    Public Function Fichier_Name(Fichier)
    Dim Fso ' As Object
    If Fichier_Exist(Fichier) = True Then
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Fichier_Name = Fso.GetBaseName(Fichier)
    Set Fso = Nothing
    End If
    End Function
    'Retourne l'extension du fichier, à partir du chemin d'accès complet précisé en paramètre.
    Public Function Fichier_extension(Fichier)
    Dim Fso ' As Object
    If Fichier_Exist(Fichier) = True Then
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Fichier_extension = Fso.GetExtensionName(Fichier)
    Set Fso = Nothing
    End If
    End Function
     
    'Copie un fichier d'une source vers une destination.
    Public Sub Copie_Fichier(Source, Destination)
    Dim Fso ' As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Fso.CopyFile Source, Destination, True
    Set Fso = Nothing
    End Sub
     
    'Déplace un ou plusieurs fichiers d'un emplacement source vers une destination.
    Public Sub Deplace_Fichier(Source, Destination)
    Dim Fso ' As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Fso.MoveFile Source, Destination
    Set Fso = Nothing
    End Sub
     
    'Supprime le ou les fichiers dont le nom est précisé en argument.
    Public Sub Supprimer_Fichier(DelFichier)
    If Fichier_Exist(DelFichier) = True Then
    Dim Fso ' As Object
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Fso.DeleteFile DelFichier, True
    Set Fso = Nothing
    End If
    End Sub
    Function AppendTxt(sFile, sText)
    Dim Fso, NewFichier
     
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set NewFichier = Fso.OpenTextFile(sFile, 8)
     
    NewFichier.Write sText
    NewFichier.Close
     
    Set NewFichier = Nothing
    Set Fso = Nothing
     
    End Function
     
    Public Sub FichierLog(sFile, TXT)
    Dim Fso
    'CreerPath FichierLog
     
    Set Fso = CreateObject("Scripting.FileSystemObject")
     
    If Fso.FileExists(sFile) = False Then EnteteFichier sFile
     
    AppendTxt sFile, TXT
    End Sub
     
    Sub EnteteFichier(Fichier)
    Dim TXT, Fso, NewFichier
    TXT = ""
     'WScript.Echo Fichier
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set NewFichier = Fso.OpenTextFile(Fichier, 2, True)
    NewFichier.Write TXT
    NewFichier.Close
     
     
    Set NewFichier = Nothing
    Set Fso = Nothing
    End Sub
    Dernière modification par AlainTech ; 20/07/2014 à 13h47. Motif: Suppression de la citation inutile

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2014
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Merci rdurupt pour ta réponse, mais j'ai finalement trouvé beaucoup plus simple avec les moyens techniques à disposition

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

Discussions similaires

  1. [XL-2010] Importer fichier CSV vers MYSQL en VBA Excel
    Par 6116d dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 17/06/2014, 16h40
  2. [XL-2007] Transfert Userform vers un autre classeur Excel
    Par Assonou dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/10/2012, 03h22
  3. Transfert csv sur ftp
    Par Ambrocbt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/01/2012, 11h37
  4. VBA Excel : Transfert listbox vers Excel
    Par Secco dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 27/04/2008, 23h33
  5. [sql][débutant] export de csv vers ftp ?
    Par Christophe93250 dans le forum Access
    Réponses: 1
    Dernier message: 25/06/2006, 13h50

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