Partage
  • Partager sur Facebook
  • Partager sur Twitter

Envoyez un mail PJ a plusieurs destinataires VBA

Access - VBA

Anonyme
    14 novembre 2017 à 12:00:17

    Bonjour

    J'ai besoin d'aide sur l'envoie d'e-mail à plusieurs adresses destinataires répertoriées dans une table de ma base.

    le code suivant est celui que j'uttilise mais cela ne prends pas en compte les pièce jointe, or j'aimerais envoyer également les pièce jointes.

    Aussi, j'aimerais que le mail ailles directement sans moyen de l'éditer sur une messagerie.

    J'utilise Lotus IBM comme client de messagerie :

    'ENVOIE DE MAIL GESTIONNAIRE
    Private Sub Commande219_Click()
    
    
    'Déclaration des variable
      Dim rst As DAO.Recordset
      Dim strSQL As String
      Dim strMessageType As String
      Dim strTitre As String
      Dim strMsg As String
      
     
      ' Titre du message
      strTitre = "{Objet} -- Résolu" _
    
      
      ' Message type à expédier
      ' Les signes {...} seront remplacés plus loin par
      ' les infos Client
      strMessageType = "Bonjour," _
        & vbCrLf & vbCrLf _
        & "En date du {Date}, Nous avons reçu du client {Nom_Client} la réclamation en objet." & vbCrLf & vbCrLf _
        & "Nous vous écrivons pour vous informer que cela a été pris en compte et désormais clôt." & vbCrLf _
        & vbCrLf & "Nous vous souhaitons une bonne réception {Justificatif}" _
        & vbCrLf & vbCrLf & "~~ Service de Réclamations - XXX ~~"
      
      ' Ouverture de la requête
      ' (seuls les gestionnaire ayant un email sont concernés ici)
      strSQL = " SELECT * FROM [Reclamations] WHERE (((Reclamations.Etat)='Clôturée')) " _
    
      Set rst = CurrentDb.OpenRecordset(strSQL, dbOpenSnapshot)
      
      ' Parcourir la liste des clients
      While Not rst.EOF
        ' Construire un message personnalisé
        ' (on remplace chaque {...} du message par les champs
        ' équivalents de la requête
        strMsg = Replace(strMessageType, "{Nom_Client}", rst("Nom_Client"))
        strMsg = Replace(strMsg, "{Date}", rst("Date"))
        strTitre = Replace(strTitre, "{Objet}", rst("Objet"))
         
        ' Expédier le mail
        SendMail rst("E-mail_gest"), strTitre, strMsg, True
        
        ' Client suivant
        rst.MoveNext
      Wend
      
      ' On libère les ressources
      rst.Close
      Set rst = Nothing
      
      
      CurrentDb.Execute ("UPDATE Reclamations SET Reclamations.Etat = 'Archivée' WHERE (((Reclamations.Etat) = 'Clôturée')) ")
      
      ' Un petit message de confirmation
      MsgBox "Un e-mail a été envoyé chez le gestionnaire!", vbInformation, "XXX -- Service de Réclamations"
    End Sub

    Merci d'avance pour vos réponses.

    -
    Edité par Anonyme 14 novembre 2017 à 12:01:50

    • Partager sur Facebook
    • Partager sur Twitter
      14 novembre 2017 à 13:03:55

      Salut,

      Tu peux utiliser l'objet CDO pour envoyer des mails.
      Guide rapide ici: https://support.openhost-network.com/autres/programmation-developpement/envoyer-mail-vba-cdo/

      Ou Voir si tu peux referencer ton client de messagerie (regarde dans ta liste de references).

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        14 novembre 2017 à 16:22:45

        Merci pour ta contribution, je vois que tu es vraiment serviable.

        Le lien que tu m'a fais suivre permet d'envoyer des mails a des adresses rentrées manuellement, mais serait-ce possible que cela se fasse automatiquement?

        Par exemple dans mon code plus haut, quand je l'exécute, ca boucle toutes les adresses mail de la colonne Email et ça envoie un message à chacune d'elles. Maintenant la difficulté est que ca ne veut pas prendre en compte le champ PJ

        Je sais pas si tu me comprends.

        • Partager sur Facebook
        • Partager sur Twitter
          14 novembre 2017 à 16:49:27

          L'objet CDO à une collection Attachments, à laquelle il suffit d'ajouter les chemin des fichiers en piece jointe.

          Tu programmes ou tu te contente de copier / coller ?

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            14 novembre 2017 à 17:22:46

            Je programme en PHP mais pas en VBA. Je suis tout nouveau dans le domaine, mais c'est pour un stage. J'avoue que c'est pas très compliqué car j'ai des bonnes notions de programmation.

            Je me suis documenté sur cet Objet et ai eu quelques exemples. Seulement, il faut inclure le Path complet de mon fichier.

            Ce que je voulais faire c'est d'envoyer les pièces jointes présentes dans ma table Access.

            Voyez-vous ce code en haut, il me permet d'envoyer des mails à chacun des email présents dans la colonne Email de ma table, seulement, la colonne des PJ lorsque je l'ajoute, le programme s'arrête et affiche une erreur.

            Dans tous les cas, je te remercie beaucoup pour ton implication, en même temps, si tu connais où je peux trouver des tutos pour franchement démarrer en VBA, .NET, ça me ferait plaisir:)

            -
            Edité par Anonyme 16 novembre 2017 à 7:52:09

            • Partager sur Facebook
            • Partager sur Twitter

            Envoyez un mail PJ a plusieurs destinataires VBA

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown