Creer une macro

bonsoir à tous

je suis nouveau dans le forum et pas tres vieux dans l'outil Excel.voila ce qui m'ammene:

j'ai crée un reporting sous excel.Ce document est distribué a une vingtaine de poste voir plus au minimum.

Pour ramasser les données je voudrais créer via un bouton un envois direct du document sur un serveur FTP.

Plusieurs contraintes:

  • garder l'intitulé du document
  • envoyer de n'importe quel emplacement du disque ou est ouvert le fichier
  • pour eviter l'ecrasement de donnée sur le FTP,incrémenté le nom du fichier automatiquement avec le nom de l'utilisateur, date et heure.
  • au niveau de l'accés du FTP il y a un login et password,le tout via internet
  • et enfinla possibilité de copier la macro pour l'appliquer à un autre document excel

depuis une semaine je bidouille des bout de codeque je recupere de part et d'autre ,mais honnetement je ne suis pas assez calé pour sniffer la solution.

La seule chose sur laquelle j'ai abouti ,envoyer via un fichier defini et un fichier batch,une feuille avec le meme nom.Evidement quand je change de PC il faut réecrire les adresses dossiers.

pour l'instant j'ai trouvé ça ,mais j'avoue ne pas savoir comment l'exploiter

Const FTP_TRANSFER_TYPE_UNKNOWN = &H0   'Type de transfert FTP auto 
Const FTP_TRANSFER_TYPE_ASCII = &H1     'Type de transfert FTP ASCII 
Const FTP_TRANSFER_TYPE_BINARY = &H2    'Type de transfert FTP Binaire 
Const INTERNET_DEFAULT_FTP_PORT = 21    'Port FTP par défaut 
Const INTERNET_SERVICE_FTP = 1          'Type de connextion Internet = FTP 
Const INTERNET_FLAG_PASSIVE = &H8000000 'FTP Mode Passif 
Const INTERNET_OPEN_TYPE_PRECONFIG = 0  'Connexion selon la config en base de registre 
Const INTERNET_OPEN_TYPE_DIRECT = 1     'Connexion directe 
Const INTERNET_OPEN_TYPE_PROXY = 3      'Connexion via proxy (à nommer) 
Const INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY = 4 'Connexion selon la config en base de registre, mais pas de connexion auto au proxy 
Const MAX_PATH = 256                    'Taille maximum du buffer pour les chaînes de caractères 
Const PassiveConnection As Boolean = True 'Pour définir le serveur FTP en mode passif 

'Pour fermer tout handle de type Internet 
Private Declare Function InternetCloseHandle Lib "wininet" (ByRef hInet As Long) As Long 
'Pour créer la connexion de type Internet 
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 
'Pour créer une ouverture Internet sur laquelle on placera la connexion 
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 
'Pour mettre un fichier via FTP sur un serveur 
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 

Private Sub CommandButton1_Click() 
    Dim hOpen As Long 
    Dim hConnection As Long 
    Dim sLocalFileName As String 
    Dim sLocalTempFileName As String 
    Dim sDistantFileName As String 

    hOpen = InternetOpen("Mettre le nom de l'appli ou rien", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0) 
    hConnection = InternetConnect(hOpen, "nom du serveur", INTERNET_DEFAULT_FTP_PORT, "login", "mot de passe", INTERNET_SERVICE_FTP, IIf(PassiveConnection, INTERNET_FLAG_PASSIVE, 0), 0) 

    sLocalFileName = ThisWorkbook.Path & "\" & ThisWorkbook.Name 
    sLocalTempFileName = sLocalFileName & ".tmp" 
    sDistantFileName = "/apps/kycUAT/" & ThisWorkbook.Name 

    ThisWorkbook.SaveAs sLocalTempFileName 
    FileSystem.Kill sLocalFileName 
    ThisWorkbook.SaveAs sLocalFileName 

    If FtpPutFile(hConnection, sLocalTempFileName, sDistantFileName, FTP_TRANSFER_TYPE_BINARY, 0) Then 
        MsgBox "Transfert FTP de " & sLocalFileName & " réussi" 
    Else 
        MsgBox "Transfert FTP de " & sLocalFileName & " raté" 
    End If 

    FileSystem.Kill sLocalTempFileName 

    InternetCloseHandle hConnection 
    InternetCloseHandle hOpen 
End Sub

alors vous la trouvez comment l'idées?

Rechercher des sujets similaires à "creer macro"