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 :

Envoyer depuis Access un mail avec ou sans pièce jointes [AC-2003]


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut Envoyer depuis Access un mail avec ou sans pièce jointes
    Bonjour,

    J'ai développé sur access 2003 une application contenant entre autre un formulaire qui envoie un mail (avec des champs pré-rempli en référence au formulaire de saisie) avec une pièce jointe.
    Tout fonctionne bien, mais s'il n'y a pas de pièce jointe j'ai un message d'erreur "utilisation incorrect de Null" sur la ligne astrFichiers(1) =me.photo (voir code ci-dessous).
    Pourriez-vous me dire comment le gérer ?
    Merci de votre aide

    Voici mon code sur clic du bouton "envoi mail :

    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
    Dim strEmail As String, strObj As String, strMsg As String, blnEdit As Boolean, avarFichiers As Variant
    Dim astrFichiers(1 To 1) As String
     
    If IsNull(Me.CptService) Then Exit Sub
    'Dim D As String, O As String, C As String, f As Form, r As Boolean, X As Boolean, Cc As String
    Set f = Forms![Envoi Email]
    If Me.Destinataire = "" Or IsNull(Me.Destinataire) Then Exit Sub
     astrFichiers(1) = Me.photo   -> LE MESSAGE D'ERREUR SE TROUVE SUR CETTE LIGNE
     
    ' On expédie le message
    SendOLMail2 Me.Destinataire, _
      Me.Signalement, _
      "Bonjour," & vbCrLf & vbCrLf & "Un " & Me.OrigineSignalement.Column(1) & " a transmis au service démocratie locale le signalement suivant :" _
      & vbCrLf & Me.Signalement & vbCrLf _
      & vbCrLf & "Nous vous serions gré de nous indiquer la nature et la date de(s) inervention(s) que vous envisagez d'effectuer. S'il vous semble impossible de régler ce problème, il conviendrait de nous informer des raisons de cette impossibilité " & vbCrLf _
      & vbCrLf & "Quartier : " & Me.Boutique.Column(1) & vbCrLf _
      & vbCrLf & "Téléphone : " & Me.Boutique.Column(2) & vbCrLf _
      & vbCrLf & "vie-quartiers@toto.fr " & vbCrLf _
      & vbCrLf & "CONFIDENTIALITE : " & Chr(10) & "Ce message et les éventuelles pièces attachées sont confidentiels " _
      & vbCrLf & "Si vous n'êtes pas dans la liste des destinataires :" & Chr(10) & "Veuillez en informer l'expéditeur immédiatement, ne pas divulguer" _
      & vbCrLf & "le contenu à une tierce personne, ne pas l'utiliser pour quelque raison que ce soit" _
      & vbCrLf & "ne pas le stocker ou copier l'information qu'il contient sur un quelconque support." _
      & vbCrLf & "NE M'IMPRIMER QUE SI NECESSAIRE ", _
      False, _
      astrFichiers
    Commande22_Click
    Commande25_Click
    End Sub

  2. #2
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Décembre 2015
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Décembre 2015
    Messages : 217
    Points : 356
    Points
    356
    Par défaut
    Salut,

    As tu essayé avec Nz() ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    astrFichiers(1) = Nz(Me.photo,"")

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    j'ai modifié le code et j'ai un nouveau message d'erreur qui dit : erreur : -1802043389 Ce chemin d'accès n'existe pas. Assurez qu'il est correct

    Je précise que le champ me.photo renvoi le chemin de l'image.
    Merci pour votre rapidité de réponse

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 407
    Points : 19 842
    Points
    19 842
    Billets dans le blog
    66
    Par défaut
    Bonjour,

    Il faudrait voir le code de la procédure SendOLMail2 et contrôler comment est traité la variable astrFichiers dans le cas ou elle contient une chaîne vide.

    Cdlt,

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Voici le code de la procédure :


    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
    Public Function SendOLMail2( _
      ByVal strEmail As String, _
      ByVal strObj As String, _
      ByVal strMsg As String, _
      ByVal blnEdit As Boolean, _
      Optional ByVal avarFichiers As Variant, Optional copy As sting)
      If Not (IsNull(Copie)) And Copie <> "" Then OEmail.Cc = Copie
     
    Dim astrFichiers(1 To 3) As String
     
    Dim D As String, O As String, C As String, f As Form, r As Boolean, X As Boolean, Cc As String
     
    Dim ol As Outlook.Application
    Dim mi As Outlook.MailItem
    Dim varPJ As Variant
     
    ' Créer une instance d'Outlook
    On Error GoTo OLMailErr
    Set ol = New Outlook.Application
     
    ' Créer un objet Email
    Set mi = ol.CreateItem(olMailItem)
     
    ' Paraméter le message
    With mi
      .To = strEmail
      .Subject = O
      .Body = strMsg
     
      ' Joindre les pièces, s'il y en a
      For Each varPJ In avarFichiers
        .Attachments.Add (varPJ)
      Next
     
      If blnEdit Then
        .Display
      Else
        .Send
      End If
    End With
     
    Set mi = Nothing
    Set ol = Nothing
    Exit Function
     
    OLMailErr:
        MsgBox "Erreur : " & err.Number & vbCrLf & err.Description
        Exit Function
    End Function

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 407
    Points : 19 842
    Points
    19 842
    Billets dans le blog
    66
    Par défaut
    Apparemment le tableau contenant les chemins des fichiers est un argument optionnel dans la fonction.

    Il faudrait donc tester si la variable si astrFichiers(1) contient une chaine vide, et si c'est le cas ne pas passer le dernier argument à la fonction.

    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
    Dim strEmail As String, strObj As String, strMsg As String, blnEdit As Boolean, avarFichiers As Variant
    Dim astrFichiers(1 To 1) As String
     
    If IsNull(Me.CptService) Then Exit Sub
    'Dim D As String, O As String, C As String, f As Form, r As Boolean, X As Boolean, Cc As String
    Set f = Forms![Envoi Email]
    If Me.Destinataire = "" Or IsNull(Me.Destinataire) Then Exit Sub
     astrFichiers(1) = nz(Me.photo,"")   -> LE MESSAGE D'ERREUR SE TROUVE SUR CETTE LIGNE
     
    ' On expédie le message
     
    if  astrFichiers(1)<>"" Then
    SendOLMail2 Me.Destinataire, _
      Me.Signalement, _
      "Bonjour," & vbCrLf & vbCrLf & "Un " & Me.OrigineSignalement.Column(1) & " a transmis au service démocratie locale le signalement suivant :" _
      & vbCrLf & Me.Signalement & vbCrLf _
      & vbCrLf & "Nous vous serions gré de nous indiquer la nature et la date de(s) inervention(s) que vous envisagez d'effectuer. S'il vous semble impossible de régler ce problème, il conviendrait de nous informer des raisons de cette impossibilité " & vbCrLf _
      & vbCrLf & "Quartier : " & Me.Boutique.Column(1) & vbCrLf _
      & vbCrLf & "Téléphone : " & Me.Boutique.Column(2) & vbCrLf _
      & vbCrLf & "vie-quartiers@toto.fr " & vbCrLf _
      & vbCrLf & "CONFIDENTIALITE : " & Chr(10) & "Ce message et les éventuelles pièces attachées sont confidentiels " _
      & vbCrLf & "Si vous n'êtes pas dans la liste des destinataires :" & Chr(10) & "Veuillez en informer l'expéditeur immédiatement, ne pas divulguer" _
      & vbCrLf & "le contenu à une tierce personne, ne pas l'utiliser pour quelque raison que ce soit" _
      & vbCrLf & "ne pas le stocker ou copier l'information qu'il contient sur un quelconque support." _
      & vbCrLf & "NE M'IMPRIMER QUE SI NECESSAIRE ", _
      False, _
      astrFichiers
     
    else
     
    SendOLMail2 Me.Destinataire, _
      Me.Signalement, _
      "Bonjour," & vbCrLf & vbCrLf & "Un " & Me.OrigineSignalement.Column(1) & " a transmis au service démocratie locale le signalement suivant :" _
      & vbCrLf & Me.Signalement & vbCrLf _
      & vbCrLf & "Nous vous serions gré de nous indiquer la nature et la date de(s) inervention(s) que vous envisagez d'effectuer. S'il vous semble impossible de régler ce problème, il conviendrait de nous informer des raisons de cette impossibilité " & vbCrLf _
      & vbCrLf & "Quartier : " & Me.Boutique.Column(1) & vbCrLf _
      & vbCrLf & "Téléphone : " & Me.Boutique.Column(2) & vbCrLf _
      & vbCrLf & "vie-quartiers@toto.fr " & vbCrLf _
      & vbCrLf & "CONFIDENTIALITE : " & Chr(10) & "Ce message et les éventuelles pièces attachées sont confidentiels " _
      & vbCrLf & "Si vous n'êtes pas dans la liste des destinataires :" & Chr(10) & "Veuillez en informer l'expéditeur immédiatement, ne pas divulguer" _
      & vbCrLf & "le contenu à une tierce personne, ne pas l'utiliser pour quelque raison que ce soit" _
      & vbCrLf & "ne pas le stocker ou copier l'information qu'il contient sur un quelconque support." _
      & vbCrLf & "NE M'IMPRIMER QUE SI NECESSAIRE ", _
      False
     
    end if
     
    Commande22_Click
    Commande25_Click
    End Sub
    Cdlt,

  7. #7
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Maintenant j'ai un message : erreur 13, incompatibilité de type.
    Merci encore pour votre aide

  8. #8
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 407
    Points : 19 842
    Points
    19 842
    Billets dans le blog
    66
    Par défaut
    Sur quelle ligne svp ?

  9. #9
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 407
    Points : 19 842
    Points
    19 842
    Billets dans le blog
    66
    Par défaut
    Utilisez la fonction IsMissing pour voir si l'argument a été passé ou pas :

    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
    Public Function SendOLMail2( _
      ByVal strEmail As String, _
      ByVal strObj As String, _
      ByVal strMsg As String, _
      ByVal blnEdit As Boolean, _
      Optional ByVal avarFichiers As Variant, Optional copy As sting)
      If Not (IsNull(Copie)) And Copie <> "" Then OEmail.Cc = Copie
     
    Dim astrFichiers(1 To 3) As String
     
    Dim D As String, O As String, C As String, f As Form, r As Boolean, X As Boolean, Cc As String
     
    Dim ol As Outlook.Application
    Dim mi As Outlook.MailItem
    Dim varPJ As Variant
     
    ' Créer une instance d'Outlook
    On Error GoTo OLMailErr
    Set ol = New Outlook.Application
     
    ' Créer un objet Email
    Set mi = ol.CreateItem(olMailItem)
     
    ' Paraméter le message
    With mi
      .To = strEmail
      .Subject = O
      .Body = strMsg
     
      if Not IsMissing(avarFichiers) Then
      ' Joindre les pièces, s'il y en a
         For Each varPJ In avarFichiers
           .Attachments.Add (varPJ)
        Next
      end if
     
      If blnEdit Then
        .Display
      Else
        .Send
      End If
    End With
     
    Set mi = Nothing
    Set ol = Nothing
    Exit Function
     
    OLMailErr:
        MsgBox "Erreur : " & err.Number & vbCrLf & err.Description
        Exit Function
    End Function
    Cdlt,

  10. #10
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Lorsque je clique sur débogage, il se positionne sur la mise à jour de la date d'envoi, sur le rs.update ce qu'il ne faisait pas avant. Voici le code
    Cette commande "Commande25_click se lance à la fin du code sur le bouton d'envoi mail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Commande25_Click()
    Dim rs As Recordset
     
    Set rs = CurrentDb().OpenRecordset("select dateEnvoiMaiServ from SuiviAction where CptSuiviAction=" & Me.CptSuiviAction, dbOpenDynaset)
        If rs.RecordCount > 0 Then
            rs.MoveFirst
            rs.Edit
            rs("dateEnvoiMaiServ") = Now()
            rs.Update
            rs.Close
        End If

  11. #11
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 407
    Points : 19 842
    Points
    19 842
    Billets dans le blog
    66
    Par défaut
    Le champ dateEnvoiMaiServ de la table SuiviAction est de quel type ?

    S'il est de type texte il ne peut recevoir de valeur de type date comme le résultat de la fonction Now().

  12. #12
    Nouveau Candidat au Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2016
    Messages : 6
    Points : 1
    Points
    1
    Par défaut
    Yessssssssss Avec la fonction IsMissing, le message part bien et plus de message d'erreur. Le message sur la date envoi n'apparait plus, c'est le genre de message qui apparait lorsque qu'un autre utilisateur tente de modifier les mêmes données en même temps. Mais je vais réessayer pour être sur. LE format du champ est bien de type date
    Merci Beaucoup de votre aide, je suis trop contente !

    Cordialement

  13. #13
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 407
    Points : 19 842
    Points
    19 842
    Billets dans le blog
    66
    Par défaut
    Tant mieux

  14. #14
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 407
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 407
    Points : 19 842
    Points
    19 842
    Billets dans le blog
    66
    Par défaut
    Si votre problème est résolu, pouvez-vous clore la discussion ?

    Cdlt,

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/02/2014, 11h19
  2. [OL-2010] Signature e-mail avec images sans pièce jointe
    Par davidoffsky dans le forum Outlook
    Réponses: 1
    Dernier message: 31/05/2012, 08h58
  3. [Joomla!] Chronoforms : comment envoyer un e-mail avec ou sans pièce jointe ?
    Par NEfanda dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 03/01/2012, 17h58
  4. [javamail] envoi mail avec message en pièce jointe
    Par k4eve dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 16/11/2007, 11h17
  5. Envoi d'un mail avec fichier en pièce jointe
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 14/06/2005, 16h30

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