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 :

macro pour Envoi de mail individuel sur liste [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 531
    Par défaut macro pour Envoi de mail individuel sur liste
    Bonjour à Tous

    J’ai un fichier Excel « transfert 6125.xls » qui contient une feuille nommée « Liste transfert » dans celle-ci j’ai environ 300 lignes de nom et d’autres infos.
    Dans la colonne « V » j’ai le mail de chaque personne, dans la colonne « O » j’ai le n° de casier d’arrivée, en « D1 » j’ai le n° d’affaire et en « B1 » la date du transfert.

    Je souhaiterai au lancement de la macro envoyer un mail individuel à chacune des personnes de la liste avec le n° de casier associé.

    J’ai commencé une ébauche mais je ne suis pas sûr de mon code de base et je suis coincé car je n’ai pas l’habitude de gérer des boucles.

    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
    Sub Email_From_Excel(Ligne As Long)
    Dim emailApplication As Object
    Dim emailItem As Object
     
        Set emailApplication = CreateObject("Outlook.Application")
        Set emailItem = emailApplication.CreateItem(0)
        With emailItem
            .To = Worksheets("Liste transfert").Range("V" & Ligne).Value
            .Subject = "Affaire :  " & Worksheets("Liste transfert").Range(D1).Value & "<br>" _
            .Body = "Bonjour,<bf> " _
                & "<br>" _
                & "<br>" _
                & "Dans le cadre de votre transfert du:  " & Worksheets("Liste transfert").Range(B1).Value & "<br>" _
                & "<br>" _        
                & "Votre nouveau casier est le :  " & Worksheets("Liste transfert").Range("O" & Ligne).Value & "<br>" _
                & "<br>" _
                & "<br>" _    
            .Display
        End With
        Set emailApplication = Nothing
        Set emailItem = Nothing
    End Sub
    Je vous remercie pour votre aide et vous souhaite une belle journée🌞

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Septembre 2019
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Septembre 2019
    Messages : 151
    Par défaut
    Bonjour,
    à adapter,
    si tu écrit .Display (qui veut dire montrer) tu verras env. 300 fois le mail, si tu veux envoyer tes mails sans les voir, il faut mettre à la place .Send (qui veut dire envoyer)


    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
    Sub Email_From_Excel(Ligne As Long)
    Dim emailApplication As Object
    Dim emailItem As Object
     
    'j'ajoute 3 variables
    Dim boucle As Integer
    Dim i As Integer '(pour le numéro de ligne et l'incrémentation
    i = 2 ' je mets la valeur 2 car je pense que la première ligne est la ligne des en-têtes (titres)
    Dim QuantiteMails As Integer 'la quantité des destinataires, attention pas de ligne blanche sur la liste
    Sheets("Liste transfert").Range("V1").Select
    QuantiteMails = Range(Selection, Selection.End(xlDown)).Count 'ici je compte de la ligne n°1 jusqu'en bas, donc pas de ligne blanche entre 2 destinataires
     
     
        Set emailApplication = CreateObject("Outlook.Application")
        Set emailItem = emailApplication.CreateItem(0)
     
      For boucle = 1 To QuantiteMails - 1 'ici je boucle de sur les quantités de destinataires moins le titre (moins 1)
     
     
     
        With emailItem
            .To = Worksheets("Liste transfert").Range("V" & i).Value ' nous démarrons à la ligne numéro 2
            .Subject = "Affaire :  " & Worksheets("Liste transfert").Range("D" & i).Value
     
            'je ne connaît pas <bf>, je pense que tu veux aller à la ligne, j'ai mis br, voir ci-dessous, une petite légende sur le code HTML avec un exemple plus bas
            ' faire attention au guillemets,
            ' quand tu mets le underscore "_" cela veut dire que la suite est à la ligne du dessous, dans ce cas il ne peut pas y avoir un point (.Display)
     
            .Body = "Bonjour,<br>" _
                & "<br>" _
                & "<br>" _
                & "Dans le cadre de votre transfert du:  " & Worksheets("Liste transfert").Range("B" & i).Value & "<br>" _
                & "<br>" _
                & "Votre nouveau casier est le :  " & Worksheets("Liste transfert").Range("O" & i).Value & "<br>" _
                & "<br>" _
                & "<br>"
            .Display ' si tu ne veux pas voir tes env. 300 mails, alors il faut .Send au lieu de .Display
        End With
       i = i + 1 ' on incrémente i
        Next boucle 'boucle pendant env. 300 fois
     
     
     
        'ne pas oublier la phrase de courtoisie, veuillez...
     
       'langage HTML
     '<p> "ton texte ici"  <p> sauter une ligne
     '<br> "ton texte ici"  <br>a la ligne
     '<B> "ton texte ici"  </B> en gras
     
    'exemple ci-dessous
      ' Signature = "<B><p>Nom Prenom</B><p>" & _
                "Titre<br>" & _
                "<B>Société</B><br> " & _
                "Adresse<br>" & _
                "Téléphone<br>" & _
                "Mail<br>"
     
     
        Set emailApplication = Nothing
        Set emailItem = Nothing
    End Sub

  3. #3
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 580
    Par défaut
    Bonjour,

    si tu rédige ton mail en intégrant de balise HTML il faut utiliser HTMLBody et non Body!

    https://www.developpez.net/forums/d1...t/#post7968025

  4. #4
    Membre éclairé Avatar de mgascult
    Homme Profil pro
    Logistique Immobilière
    Inscrit en
    Août 2013
    Messages
    531
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Logistique Immobilière
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 531
    Par défaut
    Bonjour à Tous,

    merci messieurs pour vos explications précieuses.
    Je vais essayer de tester cela cette semaine.

    Je vous souhaite une Belle journée 🌞

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/12/2020, 16h08
  2. Macro pour envoi de mail auto selon conditions
    Par soadadrinker dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/06/2013, 00h16
  3. [OL-2007] Macros pour envoi de mail
    Par Lelouche dans le forum Outlook
    Réponses: 8
    Dernier message: 12/04/2013, 16h44
  4. Macro pour envoi de mail
    Par guiles dans le forum VBA Word
    Réponses: 2
    Dernier message: 10/06/2009, 16h37
  5. [MySQL] Parcourir la liste des emails extraits de la base pour envois de mail
    Par Ylias dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/02/2006, 22h34

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