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 Subalors vous la trouvez comment l'idées?