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

VBA Access Discussion :

Upload de fichiers sur FTP


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 45
    Points
    45
    Par défaut Upload de fichiers sur FTP
    Bonjour à tous !

    Mon problème est dans le titre...
    Je cherche à exporter un fichier sur mon FTP en cliquant sur un bouton dans mon application Access.

    Je me suis donc renseigné et je suis tombé ici :
    http://access.developpez.com/sources...hiers#EnvoiFTP

    Seulement voilà, lorsque je clic sur le bouton en question, Access plante, et le fichier qui est uploadé est vide !
    La connexion se fait bien puisqu'un fichier est quand même présent sur le FTP.

    J'aimerais donc savoir comment faire pour qu'Access ne plante pas, et pour que le fichier soit réellement uploadé...

    J'éspère avoir été assez clair.

    Merci !

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Bonjour,
    Voici une procédure d'Upload qui marche correctement :
    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
     
    Private Sub cmdUpload_Click()
     
    'Code à utiliser pour uploader un fichier
    'text2 => nom de l'user ( anonyme qlq a une idée ? )
    'text3 => password de l'user
    'text1 => nom du serveur ( ftp.bidulechouete.fr )
    'text4 => fichier source
    'text5 => fichier de destination
    'Procedure :
    '	With Inet1
    '    		.URL = ("ftp://" & text2 & ":" & text3 & "@" & text1)
    '    		.Execute , ("PUT " & Text4 & " " & Text5)
    '	End With
    ' A besoin de la reference : Microsoft Internet Transfert Controls 6.0
     
    Dim fichToUpload As String
    Dim fichToRename As String
    Dim Clef As String
    Dim RepDestination As String
    Dim i As Byte
    Dim tmpString As String
    Dim ctl As Object
     
        On Error GoTo Err_cmd
     
        If MsgBox("Voulez-vous envoyer les fichiers sur votre FTP ?", vbQuestion + vbYesNo) = vbYes Then
     
            With Me.Inet1
                '.Protocol = icFTP    'declaration protocole
     
                .URL = "monsite.free.fr"
                .UserName = "nomUtilisateur"
                .Password = "motdepasse"
     
                'Fichier à Uploader
                 fichToUpload = "d:/dev/dev_FTP/test.log"
     
                If Dir(fichToUpload) = "" Thef
                    MsgBox fichToUpload & vbCrLf & " : fichier introuvable !", vbExclamation
                    .Execute , "CLOSE"                  ' Ferme la connexion.
                    Do Until .StillExecuting = False    'boucle pendant le traitement de Inet
                        DoEvents
                    Loop
                    MsgBox "Reconfigurez SVP", vbInformation
                    Exit Sub
                End If
     
                fichToRename = "fichierRenommé.txt"
     
                If InStr(1, fichToUpload, " ") <> 0 Then
                    'y a espace dans le chemin, faut doubler les ""
                    fichToUpload = """" & fichToUpload & """"
                End If
                If InStr(1, fichToRename, " ") <> 0 Then
                    'y a espace dans le chemin, faut doubler les ""
                    fichToRename = """ & fichToRename & """
                End If
     
                'RepDestination = cr.JustDécrypter(GetSetting("FTP - Upload backup", "FTP", "Répertoire de destination"), Clef)
                RepDestination = "Dir1"
     
                tmpString = fichToUpload & " /" & RepDestination & "/" & fichToRename
                Debug.Print "tmpString: " & tmpString
     
                .Execute , "PUT " & tmpString
                Do Until .StillExecuting = False    'boucle pendant le traitement de inet
                    DoEvents
                Loop
     
                .Execute , "CLOSE"    		'ferme la connexion.
                Do Until .StillExecuting = False    'boucle pendant le traitement de inet
                    DoEvents
                Loop
            End With
     
     
            MsgBox "Transfert réussi ;-)"
     
        End If
     
    Exit_cmd:
        Exit Sub
     
    Err_cmd:
        MsgBox Err.Number & vbCr & Err.Description
        Resume Exit_cmd
     
    End Sub
    Bonne journée
    "Always look at the bright side of life." Monty Python.

  3. #3
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Points : 35
    Points
    35
    Par défaut
    J'essaie aussi de mon côté, mais ça bloque à la ligne

    "Membre de méthode ou de données introuvable" sur .Inet1 !!

    C'est quoi le pb ?

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Désolé,
    mais il y a quelque temps déjà que j'ai fait ça.

    Dans votre formulaire il faut bien sûr insérer l'activeX "Microsoft Internet Transfert Controls 6.0 (SP6)" que j'ai nommé Inet1 sur mon form.
    Donc vous devez avoir un activeX dont les propriétés sont :
    ...
    Application OLE : Inet
    ...
    Classe objet : InetCtls.Inet.1
    ...

    Bonne journée
    "Always look at the bright side of life." Monty Python.

  5. #5
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Points : 35
    Points
    35
    Par défaut
    Rien de ce nom là...
    J'ai mis Microsoft Internet Controls, viré le "Me." pour ne laisser que "Inet1", ça passe, mais il me dit "objet requis" sur
    .URL = "monsite.free.fr"

    Logique... peut-être, mais ça m'avance pas à grand chose


  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Une chose certaine c'est que pour ce code, il faut cet activeX et pas un autre.
    A la réflexion, il est peut être installé avec VB6 :
    Sur mon pc :
    C:\winnt\system32\msinet.ocx

    Bon courage
    "Always look at the bright side of life." Monty Python.

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 45
    Points
    45
    Par défaut
    Pour moi, il est déjà impossible d'insérer l'activeX "Microsoft Internet Transfert Controls 6.0 (SP6)"...
    Je ne le trouve pas dans les références, et pourtant, j'ai bien le fichier \system32\msinet.ocx

    Donc, chez moi, c'est pire que chez Dcanl, puisque rien ne fonctionne...

  8. #8
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Points : 35
    Points
    35
    Par défaut
    Moi non plus, je n'ai pas "Microsoft Internet Transfert Controls 6.0 (SP6)" dans la liste des références dans VBA. Je n'ai que "Microsoft Internet Controls", c'est sûrement pas le bon truc !
    Je n'ai même pas MSINET.OCX ! Alors c'est qui le pire, hein, Copernic ?

    J'ai récupéré le fichier MSINET.OCX sur le net, rien de mieux, toujours pas présent dans les références, le code ne marche pas mieux... Même en chargeant la librairie directement dans le code, ça va pas !

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut [Access] Enregistrer un composant OCX dans la base de registre
    Bonjour,
    Citation Envoyé par Copernic09
    Pour moi, il est déjà impossible d'insérer l'activeX "Microsoft Internet Transfert Controls 6.0 (SP6)"...
    Je ne le trouve pas dans les références, et pourtant, j'ai bien le fichier \system32\msinet.ocx
    Si le composant OCX n'apparaît pas dans les références disponibles, c'est qu'il est probablement mal enregistré (ou pas du tout enregistré) dans la base de registres de Windows.

    Pour y remédier, pas de souci...
    A partir de la boîte de dialogue, cliquer sur le bouton [Parcourir...].
    Dans la boîte [Ajouter une référence], commencer par modifier le [Type] de référence pour afficher "Contrôle ActiveX (.ocx)", puis sélectionner le fichier OCX "tant désiré" et cliquer sur le bouton [Ouvrir].

    Si tout s'est bien passé, la référence est ajoutée et le contrôle ActiveX sera disponible dans le menu [Insertion >> Contrôle ActiveX...].

  10. #10
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 878
    Points : 4 754
    Points
    4 754
    Par défaut
    Ah, les gars, vous m'avez obligé à replonger dans le FTP :

    Donc voici une solution sans besoin d'OCX, inspirée de la faq (qui ne marche pas correctement, il est vrai)

    Vous mettez dans un module :
    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
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    Option Compare Database
    Option Explicit
     
    '-------------------
    'Déclaration des API
    '-------------------
     
    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 FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
    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 InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hOpen As Long, ByVal sURL As String, ByVal sHeaders As String, ByVal lLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
    Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
    Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
    Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hFile As Long, ByVal localFile As String, ByVal newRemoteFile As String, ByVal dwFlags As Long, ByVal lContext As Long) As Boolean
     
     
    Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
    Private Const INTERNET_OPEN_TYPE_DIRECT = 1
    Private Const INTERNET_OPEN_TYPE_PROXY = 3
     
    Private Const scUserAgent = "VB OpenUrl"
    Private Const INTERNET_FLAG_RELOAD = &H8000000  '(&H8000000 mode passif, 0 mode actif)
    Private Const INTERNET_bin_asc = &H2            '(&H1 ascii, &H2 binaire)
     
     
    Public Sub Download(sURL As String, SaveAs As String)
    'Exemple :
    '      Call Download("http://www.url.com/fichier.zip", "C:\Fichier.zip")
     
        Dim hOpen As Long
        Dim hOpenUrl As Long
        Dim bDoLoop As Boolean
        Dim bRet As Boolean
        Dim sReadBuffer As String * 2048
        Dim lNumberOfBytesRead As Long
        Dim sBuffer As String
        Dim sMsg As String
     
        hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)
        hOpenUrl = InternetOpenUrl(hOpen, sURL, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)
     
        bDoLoop = True
        While bDoLoop
            sReadBuffer = vbNullString
            bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
            sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
            If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
        Wend
     
        Open SaveAs For Binary Access Write As #1
        Put #1, , sBuffer
        Close #1
     
        If bRet Then
            sMsg = sURL & " a été transféré "
        Else
            sMsg = sURL & " n'a pas pu être transféré"
        End If
     
        If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
        If hOpen <> 0 Then InternetCloseHandle (hOpen)
     
        'annoncer le résultat de l'opération
        If sMsg <> "" Then
            MsgBox sMsg
        Else
            MsgBox "aucun fichier transféré"
        End If
     
    End Sub
     
     
    Public Sub Upload(sURL As String, sLogin As String, sPwd As String, localFile As String, remoteDir As String, remoteSaveAs As String)
    'transfère des fichiers du disque local vers un serveur ftp (upload, mode passif)
        Dim hOpen As Long
        Dim hOpenFtp As Long
        Dim bRet As Boolean
        Dim sMsg As String
     
        '''PARAMETRES************************
        ''sURL = "ftpperso.free.fr"
        ''localFile = "c:\test.log"
        ''sLogin = "zaza"
        ''sPwd = "miaou"
        ''remoteDir = "/"
        ''INTERNET_bin_asc = &H2 '(&H1 ascii, &H2 binaire)
        ''Mode = &H8000000 '(&H8000000 mode passif, 0 mode actif)
        '''**********************************
     
        'lancer le transfert
        hOpen = InternetOpen("PutFtpFile", 1, "", "", 0)
        If hOpen = 0 Then
            MsgBox "connection internet impossible"
            Exit Sub
        End If
        hOpenFtp = InternetConnect(hOpen, sURL, 21, sLogin, sPwd, 1, INTERNET_FLAG_RELOAD, 0)
        If hOpenFtp = 0 Then
            MsgBox "connection  impossible"
            Exit Sub
        End If
     
        If FtpSetCurrentDirectory(hOpenFtp, remoteDir) = 0 Then
            MsgBox "impossible de trouver le répertoire distant " & remoteDir
            Exit Sub
        End If
     
        'nom du fichier sans le chemin
    '    Do While InStr(localFile, "\") > 0
    '        localFile = Right(localFile, Len(localFile) - InStr(localFile, "\"))
    '    Loop
     
        'transférer le fichier
        bRet = FtpPutFile(hOpenFtp, localFile, remoteSaveAs, INTERNET_bin_asc, 0)
        If bRet Then
            sMsg = localFile & " a été transféré "
        Else
            sMsg = localFile & " n'a pas pu être transféré"
        End If
     
        'fermer les pointeurs, ménage
        InternetCloseHandle hOpenFtp
        InternetCloseHandle hOpen
     
        'annoncer le résultat de l'opération
        If sMsg <> "" Then
            MsgBox sMsg
        Else
            MsgBox "aucun fichier transféré"
        End If
     
    End Sub
    et depuis votre formulaire vous pouvez appeler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Private Sub cmdGet1_Click()
    'pour le DOWNLOAD d'un fichier
    Call Download("http://micniv.free.fr/Dir1/testUp.log", "D:\dev\dev_Ftp\testUp.log")
     
    End Sub
     
     
    Private Sub cmdPut1_Click()
    'pour UPLOAD
     
    Call Upload("monsite.free.fr", "mlogin", "mot_de_passe", "D:\dev\dev_Ftp\test.log", "/Dir1", "testUp.log")
     
    End Sub
    Cette fois ça doit marcher chez vous
    Bonne journée
    "Always look at the bright side of life." Monty Python.

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 75
    Points : 45
    Points
    45
    Par défaut
    Alors d'abord, merci à =JBO= pour la référence, ca fonctionne, j'aurais dû y penser !

    Et surtout, merci à toi micniv, cette fois, ça fonctionne !!!

    Merci 1000 fois !

    I'm happy

  12. #12
    Nouveau membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    59
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 59
    Points : 35
    Points
    35
    Par défaut
    Oui, merci !

  13. #13
    Nouveau membre du Club
    Inscrit en
    Février 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 45
    Points : 35
    Points
    35
    Par défaut
    Merci

  14. #14
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 594
    Points : 34 266
    Points
    34 266
    Par défaut
    hello,
    serait-il possible de savoir la raison du refus de connection à un FTP ?
    cas ici du
    je ne suis pas en mesure de savoir si c'est parce que mon id/pwd est faux ou bien si le transfert est bloqué par ma boîte...
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  15. #15
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut Récupération Erreur wininet
    Bonsoir JP,

    Voici comment je récupère les erreurs.
    1. Déclarations supplémentaires
      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
      ' -----------------------
      ' Constantes
      ' -----------------------
      ' FormatMessage
      Const FORMAT_MESSAGE_FROM_HMODULE As Long = &H800
      Const FORMAT_MESSAGE_FROM_SYSTEM As Long = &H1000
       
      ' ----------------------------------------------------------------------
      ' Functions de l'API Windows
      ' ----------------------------------------------------------------------
      Private Declare Function GetLastError Lib "kernel32.dll" () As Long
       
      Private Declare Function FormatMessage Lib "kernel32.dll" Alias "FormatMessageA" ( _
               ByVal dwFlags As Long, ByVal lpSource As Long, _
               ByVal dwMessageId As Long, ByVal dwLanguageId As Long, _
               ByVal lpBuffer As String, ByVal nSize As Long, _
               ByVal Arguments As Long) As Long
       
      Private Declare Function GetModuleHandle Lib "kernel32.dll" Alias "GetModuleHandleA" _
              (ByVal lpszModuleName As String) As Long
    2. Fonction pour récupérer le message de l'erreur
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      Function TranslateWinError(lngErr As Long, Optional strModuleName As String = "")
      Dim strMsg As String, hModule As Long, lgFmt As Long, lgRetVal As Long
      If Len(strModuleName) = 0 Then
         hModule = 0  ' Message d'erreur Windows
         lgFmt = FORMAT_MESSAGE_FROM_SYSTEM
      Else
         hModule = GetModuleHandle(strModuleName)
         lgFmt = FORMAT_MESSAGE_FROM_HMODULE
      End If
      strMsg = String(1024, vbNullChar)
      lgRetVal = FormatMessage(lgFmt, hModule, lngErr, 0, strMsg, 1023, 0)
      strMsg = Left(strMsg, InStr(1, strMsg, vbNullChar) - 1)
      TranslateWinError = strMsg
      End Function
    3. Exemple d'utilisation.
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
          hOpenFtp = InternetConnect(hOpen, sURL, 21, sLogin, sPwd, 1, INTERNET_FLAG_RELOAD, 0)
          If hOpenFtp = 0 Then
      	MsgBox TranslateWinError(Err.LastDllError, "wininet.dll"), , "Erreur dans dll wininet -> InternetConnect"
              Exit Sub
          End If
    A+

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

Discussions similaires

  1. uploader un fichier sur ftp
    Par kohsaka dans le forum VB.NET
    Réponses: 3
    Dernier message: 26/02/2008, 15h05
  2. [.NET 2.0] Probleme upload fichier sur ftp avec My
    Par Aspic dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/03/2007, 09h10
  3. Uploader un fichier sur un ftp .
    Par gnia?? dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 09/12/2006, 14h13
  4. [Upload] upload fichier sur ftp free
    Par Halukard dans le forum Langage
    Réponses: 61
    Dernier message: 12/02/2006, 20h50
  5. Upload de fichiers sur un ftp
    Par Crazyblinkgirl dans le forum ASP
    Réponses: 10
    Dernier message: 20/06/2004, 11h55

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