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 :

Envoi mail groupé en VBA [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2014
    Messages : 139
    Points : 63
    Points
    63
    Par défaut Envoi mail groupé en VBA
    Bonjour à tous,

    Je sais comment envoyer des mails via VBA
    Mais là je ne vois pas l'astuce.

    Je souhaite envoyer des stats et je voudrais que le contenu d'une table en soit destinataire
    Cependant vu que ce sont des mails lourds (plusieurs PDF), j'aimerai ne pas envoyer X mail pour X destinataires mais plutôt un seul mail vers TOUS les destinataires.
    Je sais faire si je met les adresses en dur dans VBA, mais je gère différents sites donc difficile de revenir pour corriger les entrants et sortants.

    Avez vous une idee?
    Merci à vous

  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,

    Pourquoi ne fais tu pas une table qui te serviras de liste des destinataires ?

  3. #3
    Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2014
    Messages : 139
    Points : 63
    Points
    63
    Par défaut
    Je l'ai mais sauf erreur de ma part, par defaut, ca enverra un mail par destinataire.

    Et je cherche justement comment les regrouper sur le meme mail pour en envoyer qu'un

    Merci de ton aide

  4. #4
    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
    J'ai sauté une ligne, désolé.

    Alors au lieu de faire une boucle qui va envoyer le mail par destinataire tu peux faire une boucle qui va ajouter un destinataire à ta liste de destinataires du mail.

    Par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim i as Long
    Dim Destinataires as String
     
    For i=1 to XDestinataires
    if Destinataires = "" then
    Destinataires = TonChampDestinataire
    else
    Destinataires = Destinataires & ";"& TonChampDestinataire
    end if
     
    Next i

  5. #5
    Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2014
    Messages : 139
    Points : 63
    Points
    63
    Par défaut
    Oh merci à toi, donc c'est possible.
    Je teste ça et je te tiens au courant
    Merci

  6. #6
    Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2014
    Messages : 139
    Points : 63
    Points
    63
    Par défaut
    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
    Public Sub Commande3_Click()
    '   Initialisation et ouverture de Outlook :
    Dim i As Long
    Dim Destinataires As String
    Dim MonOutlook As Object
    Dim MonMessage As Object
    Set MonOutlook = CreateObject("Outlook.Application")
    Set MonMessage = MonOutlook.createitem(0)
     
    For i = 1 To XDestinataires
    If Destinataires = "" Then
    Destinataires = mail
    Else
    MonMessage.Cc = Destinataires & ";" & mail
    End If
    Next i
     
    '   Destinataire du message :
     
    '  Titre du mail :
    MonMessage.Subject = "TEST TEST"
    '  Contenu du mail :
    Corps = "Bonjour,"
    MonMessage.body = Corps
    '   C’est parti :
    MonMessage.send
     '   Fermeture de la session Outlook :
    Set MonOutlook = Nothing
     
    End Sub
    Je dois l'avoir dans le désordre mais je n'arrive pas à trier tout ça pour que cela fonctionne
    Table des QUI avec nom, prenom, fonction et mail
    Requete sur les QUI en fonction de mes criteres
    Formulaire sur ma requete avec un bouton qui lance la fonction sur clic
    Merci de me permettre d'abuser de ton aide

  7. #7
    Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2014
    Messages : 139
    Points : 63
    Points
    63
    Par défaut
    Précision
    Le message d'erreur est qu'il n'y a pas de destinataires

  8. #8
    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
    Il faut que tu utilises
    et non Cc

    Sinon, u peux essayer avec les modifications suivantes

    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
    Public Sub Commande3_Click()
    '   Initialisation et ouverture de Outlook :
    Dim i As Long
    Dim Destinataires As String
    Dim XDestinataires As long
    XDestinataires = Dcount("[Champ]","[Table]")
    Dim MonOutlook As Object
    Dim MonMessage As Object
    Set MonOutlook = CreateObject("Outlook.Application")
    Set MonMessage = MonOutlook.createitem(0)
     
    For i = 1 To XDestinataires
    If Destinataires = "" Then
    Destinataires = mail
    Else
    Destinataires = Destinataires & ";" & mail
    End If
    Next i
     
    '   Destinataire du message :
     
    '  Titre du mail :
    MonMessage.To = Destinataires
    MonMessage.Subject = "TEST TEST"
    '  Contenu du mail :
    Corps = "Bonjour,"
    MonMessage.body = Corps
    '   C’est parti :
    MonMessage.send
     '   Fermeture de la session Outlook :
    Set MonOutlook = Nothing
     
    End Sub

  9. #9
    Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2014
    Messages : 139
    Points : 63
    Points
    63
    Par défaut
    On s'en approche
    XDestinataires me donne bien le résultat de 9 correspondant au nombre de mails sortis de la requete.

    J'ai une erreur 94 utilisation de null incorrecte avec un debuguage sur
    Destinataires = mail

    Je cherche aussi de mon coté

  10. #10
    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
    La façon dont tu utilises "mail" dans ton code est en variable, la bonne utilisation est plutôt par exemple, si tu utilises un formulaire de traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!TonFormulaire!mail
    Si tu utilises une requête, il vaut mieux utiliser le RecordSet.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 200
    Points : 157
    Points
    157
    Par défaut
    Salut,
    Moi j'utilise ceci qui fonctionne.
    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
     
    Dim appOutLook As Outlook.Application
        Dim MailOutLook As Outlook.MailItem
        Set appOutLook = CreateObject("Outlook.Application")
        Set MailOutLook = appOutLook.CreateItem(olMailItem)
    With MailOutLook
            .BodyFormat = olFormatRichText
            .To = "DJEZ <djez@djez.fr>; djez2 <djez2@djez2.fr>"
            .CC = "DJEZ 3 <djez3@djez3.fr>"
            '.bcc = ""
            .Subject = "SUJET DE MON MAIL"
            .HTMLBody = "Bonjour, <br /> Voici un mail au format <b><u> HTML</u></b><p>et voici un autre paragraphe</p>"
            '.Attachments.Add (strPath & strFile)
            .Send
            '.Display    'preparation du mail sans l'envoyer
    End With
    Pour le multidestinataire issus d'une table il suffit de créer une requête avec DAO.recordset qui met en variable (.listeDestinataire par exemple) tous les déstinataires séparés par un; et remplacer le .to = "" par .to = listeDestinataire

  12. #12
    Membre du Club
    Homme Profil pro
    Directeur technique
    Inscrit en
    Août 2014
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Août 2014
    Messages : 139
    Points : 63
    Points
    63
    Par défaut
    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
    Sub EnvoiMail_click()
      ' #######################
      ' # 1. Access via DAO : #
      ' #######################
     
      ' Initialisation :
      Dim ListeEMail As Recordset
      Set ListeEMail = CurrentDb.OpenRecordset("Requete/table où sont stockés les mails")
      ListeEMail.MoveFirst
      ListeComplete = ""
     
      ' Parcourt de la requête :
      While Not ListeEMail.EOF
        ListeComplete = ListeComplete & ListeEMail("ChampMail") & ";"
        ListeEMail.MoveNext
      Wend
     
      ' On enlève le dernier point virgule :
      ' ListeComplete nous sera évidemment utile tout à l'heure :
      ListeComplete = Left(ListeComplete, Len(ListeComplete) - 1)
     
      ' Stop DAO :
      ListeEMail.Close
      Set ListeEMail = Nothing
     
      ' #######################################
      ' # 2. Envoi de l'E-Mail avec Outlook : #
      ' #######################################
     
      ' Initialisation :
      Dim MonOutlook As Object
      Dim MonMessage As Object
      Set MonOutlook = CreateObject("Outlook.Application")
      Set MonMessage = MonOutlook.createitem(0)
     
      ' Préparation du message :
      MonMessage.to = ListeComplete
     
      ' Récupération de la chaîne d'E-Mails Access :
      MonMessage.bcc = ""
      MonMessage.Subject = "Statistiques mensuelles Techniques"
      Corps = "Bonjour à tous,"
      Corps = Corps & Chr(13) & Chr(10)
      MonMessage.body = Corps
     
      ' C'est parti :
      MonMessage.send
     
      ' Fermeture de la session Outlook :
      Set MonOutlook = Nothing
    End Sub
    Bonjour à tous,

    En cherchant à plusieurs, on trouve donc merci pour votre aide.
    On a trouvé cela sur le net j’espère que cela pourra aider ceux qui en auraient besoin comme moi.

    Merci et je passe en résolu

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

Discussions similaires

  1. [XL-2010] envoi mail outlook avec vba excel
    Par fazpedro dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 30/09/2014, 10h27
  2. Envoi mail de confirmation vba word
    Par vbword dans le forum VBA Word
    Réponses: 7
    Dernier message: 25/05/2011, 17h27
  3. envoi mail outlook avec vba excel
    Par momolamoto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/09/2010, 10h45
  4. [XL-2003] Envoi mail Outlook via VBA Excel erreur
    Par altra dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/08/2009, 16h50
  5. envoi mail simple en vba
    Par micom59 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/07/2009, 11h34

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