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

Macros et VBA Excel Discussion :

Envoi de mail à plusieurs destinataires


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Lycéen
    Inscrit en
    Mai 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mai 2023
    Messages : 1
    Par défaut Envoi de mail à plusieurs destinataires
    Bonjour, j'ai créé un userform qui me permet de générer un mail prérempli et de le modifier.
    Il enregistre le nom et le prénom du destinataire et commence en lui disant Bonjour NOM, PRENOM.

    Je me demandais s'il était possible de sélectionner plusieurs cellules et d'envoyer un même mail à plusieurs destinataire en gardant le NOM et le PRENOM associé.

    J'espère que je me suis bien exprimé... merci d'avance

    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
    Sub CmdENVOI_Click()
     
    Dim outApp As Outlook.Application
    Dim outMail As Outlook.MailItem
    Dim desti As String
    Dim objetMail As String
    Dim corpsTexte As String
     
    Set outApp = CreateObject("Outlook.Application")
    Set outMail = outApp.CreateItem(olMailItem)
     
    ' On récupère l'adresse e-mail du destinataire à partir du lblDesti
    desti = Lbldesti.Caption
     
    ' On récupère l'objet du mail à partir du champ txtObjet
    objetMail = txtObjet.Value
     
    ' On récupère le corps du message à partir du champ txtMail_1
    corpsTexte = txtMail_1.Value
     
    ' On définit le destinataire, l'objet et le corps du message
    outMail.To = desti
    outMail.Subject = objetMail
    outMail.Body = corpsTexte
     
    ' On envoie le message
    outMail.Send
     
    ' On ferme le formulaire
    Unload Me
     
    End Sub
     
     
     
    Sub UserForm_Initialize()
     
        Dim prenom As String
        Dim nom As String
        Dim ETAT As String
        Dim formuleBonjour As String
        Dim formuleAuRevoir As String
        Dim corpsTexte As String
     
     
        ' On récupère le prénom et le nom à partir des colonnes F et E de la ligne sélectionnée
        prenom = Cells(ActiveCell.row, "F").Value
        nom = Cells(ActiveCell.row, "E").Value
     
        ' On construit la formule de politesse "Bonjour NOM Prénom"
        ' vbCrLf = saut de ligne
        formuleBonjour = "Bonjour " & nom & " " & prenom & "," & vbCrLf & vbCrLf
     
        ' On construit la formule de politesse "Au revoir NOM_UTILISATEUR"
        formuleAuRevoir = vbCrLf & vbCrLf & "Cordialement," & vbCrLf & Application.UserName
     
        ' On récupère l'ETAT à partir de la colonne B de la ligne sélectionnée
        METIER = Cells(ActiveCell.row, "B").Value
     
        ' Si l'état ne correspond à aucune option disponible, afficher le formulaire sans aucun texte pré-écrit
        If METIER <> "STAGIAIRE" And METIER <> "COMMERCIAL" And METIER<> "RH" And METIER <> "MANAGER" Then
                corpsTexte = formuleBonjour & " " & formuleAuRevoir
     
        End If
     
        ' On construit le corps du message en fonction de l'ETAT
        Select Case ETAT
            Case "STAGIAIRE"
                corpsTexte = formuleBonjour & "Nous vous contactons pour savoir où vous en êtes dans votre travail." & formuleAuRevoir
            Case "COMMERCIAL"
                corpsTexte = formuleBonjour & "Nous aimerions savoir si des appels d'offres sont tombés." & formuleAuRevoir
            Case "RH"
                corpsTexte = formuleBonjour & "Nous souhaitons savoir si des entretiens sont en cours." & formuleAuRevoir
            Case "MANAGER"
                corpsTexte = formuleBonjour & "Nous souhaitons savoir si tout se passe bien dans votre équipe" & formuleAuRevoir
     
        End Select
     
        ' On affiche le corps du message dans le champ txtMail_1
        txtMail_1.Value = corpsTexte
     
    End Sub

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Salut, teste ceci, je me sers d'un tableau pour y stocker les adresses mail et ensuite je boucle dessus pour l'envoi au différents destinataires (non testé, je n'ai pas outlook).

    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
    Sub CmdENVOI_Click()
        ' Macro pour envoyer le mail
     
        Dim outApp As Outlook.Application
        Dim outMail As Outlook.MailItem
        Dim desti() As String
        Dim objetMail As String
        Dim corpsTexte As String
     
        Set outApp = CreateObject("Outlook.Application")
        Set outMail = outApp.CreateItem(olMailItem)
     
        ' On récupère les adresses e-mail des destinataires à partir du label Lbldesti
        desti = GetSelectedEmails()
     
        ' On récupère l'objet du mail à partir du champ txtObjet
        objetMail = txtObjet.Value
     
        ' On récupère le corps du message à partir du champ txtMail_1
        corpsTexte = txtMail_1.Value
     
        ' On envoie un mail à chaque destinataire
        Dim i As Integer
        For i = 1 To UBound(desti)
            Set outMail = outApp.CreateItem(olMailItem)
     
            ' On définit le destinataire, l'objet et le corps du message pour chaque destinataire
            outMail.To = desti(i)
            outMail.Subject = objetMail
            outMail.Body = corpsTexte
     
            ' On envoie le message
            outMail.Send
        Next i
     
        ' On ferme le formulaire
        Unload Me
    End Sub
     
    Function GetSelectedEmails() As String()
        ' Fonction pour récupérer les adresses e-mail des destinataires sélectionnés
     
        Dim selectedRange As Range
        Set selectedRange = Selection
     
        Dim desti() As String
        Dim cell As Range
        Dim i As Integer
        i = 0
     
        For Each cell In selectedRange
            If cell.Column = 5 Then ' Colonne E pour le nom
                i = i + 1
                ReDim Preserve desti(1 To i) ' Redimensionner le tableau pour ajouter une nouvelle adresse
                desti(i) = cell.Value ' Ajouter l'adresse e-mail au tableau
            End If
        Next cell
     
        GetSelectedEmails = desti
    End Function
    En lisant le Userform_Initialize, je remarque que tu affectes une valeur à METIER:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' On récupère l'ETAT à partir de la colonne B de la ligne sélectionnée
    METIER = Cells(ActiveCell.row, "B").Value
    et dans la boucle tu testes ETAT ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ' On construit le corps du message en fonction de l'ETAT
    Select Case ETAT
    Case "STAGIAIRE"

  3. #3
    Membre très actif
    Avatar de frunch
    Homme Profil pro
    Développeur / comptable
    Inscrit en
    Janvier 2022
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur / comptable
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 174
    Par défaut Re: Envoi de mail à plusieurs destinataires
    Bonjour,

    Je me demandais s'il était possible de sélectionner plusieurs cellules et d'envoyer un même mail à plusieurs destinataire en gardant le NOM et le PRENOM associé.
    J'ai fait un fichier ou un double clic sur une ligne met une croix dans la colonne email, puis tu envoies l'email par un formulaire en clic droit dans le classeur.

    l'explicatif
    MAILING MAIRIES.pdf

    le fichier
    mailing mairies.xlsm
    Cdt

Discussions similaires

  1. [XL-2010] Envoi même mail à plusieurs destinataires avec Gmail
    Par arthur83fr dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/02/2019, 19h50
  2. [PowerShell] Envoi de mails à plusieurs destinataires.
    Par 69Pierre dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 12/02/2018, 17h59
  3. Envoi de mails à plusieurs destinataires ?
    Par rimas2009 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 26/05/2010, 17h52
  4. Problème d'envoi de mails à plusieurs destinataires
    Par patessama dans le forum Exchange Server
    Réponses: 0
    Dernier message: 08/04/2009, 19h49
  5. Envoi de mail à plusieurs destinataires
    Par etuensam dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/06/2007, 09h17

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