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 :

VBA : Envoi d'un mail Outlook personnalisé [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Par défaut VBA : Envoi d'un mail Outlook personnalisé
    Bonjour,
    Je souhaite envoyer à chaque correspondants en charge d'un certain nombre de commerciaux
    un mail dont le corps du mail contiendrait le titre + Prénom + Nom du commercial. En sachant que chaque correspondant habite dans une ville et a un nombre de commerciaux différents.
    Le mail ne se génère que lorsque la colonne Mail = Oui

    Exemple du fichier excel

    Nom : Capture d’écran 2020-10-27 165755.png
Affichages : 835
Taille : 170,9 Ko

    J'ai réussi à faire un code mais le problème est qu' il me génère autant de mail que de ligne à Oui c'est dire 7 au lieu de 6.
    Le problème vient du correspondant C qui habite à Bordeaux qui a 2 commerciaux car le code me génère 2 mails au lieu d'un seul.
    Par ailleurs , je voudrais que le texte du Body change en fonction du nombre de commercial

    Dans le cas d'un seul commercial le corps du mail doit être :

    "Bonjour,"
    "Comment va votre commercial " saut de ligne
    "-" Titre + Prénom + Nom ?"



    Dans le cas de plusieurs commerciaux, le corps du mail doit être :

    Bonjour,"
    "Comment vont vos commerciaux " saut de ligne
    "-" Titre + Prénom + Nom ?"
    "-" Titre + Prénom + Nom ?"


    Ci-dessous le code VBA

    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
    Sub EMAIL()
     
    Dim LEMAIL As Variant
    Dim ligne As Integer
    Dim xSht As Worksheet
     
    Set xSht = Sheets("Feuil1")
    Set LEMAIL = CreateObject("Outlook.Application") 'création d'un objet outlouk
     
    For ligne = 3 To 100
     
    If Range("h" & ligne) = "Oui" Then
     
    With LEMAIL.CreateItem(olMailItem) ' informe le programme que nous voulons envoyer un mail.
     
    .Importance = 2 'Message importante haute
    .ReadReceiptRequested = True 'Accusé de lecture
    .OriginatorDeliveryReportRequested = True 'Accusé de réception
     
    .Subject = "test " 'le sujet
    .SentOnBehalfOfName = "adm@gmail.fr" 'la commande SentOnBehalfOfName
    permet de prendre le mail générique
    .To = Range("G" & ligne) 'placer l'adresse mail du correspondant
    .CC = ""
    .Body = "Bonjour," & vbCrLf & vbCrLf & "Comment vont vos commerciaux : " & vbCrLf & vbCrLf & Range("b" & ligne) & Range("c" & ligne) & Range("d" & ligne)
     
    .Display 'afficher le mail avant de l'envoyer sinon placer send pour envoyer
     
    SendKeys "^+{END}", True
    SendKeys "{END}", True 'envoi le curseur à la fin du texte
     
    End With
     
    End If
     
    Next ligne
     
    End Sub

    Merci d'avance car je n'ai pas un niveau très élevé pour imbriquer autant de conditions.

  2. #2
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour winnie100,

    Personnellement, je reverrais la structure de ton tableau :
    Scinder en 2 vraies tables :

    1) Liste Unique des Différents Destinataire + adresse Mail
    2) Db avec les destinataire par commerciaux ( Trié par Destinataires).

    Ajout de cellules nommées pour récupérer les Body en fonction du cas.
    Ajout de cellule nommée pour récupérer le sujet.

    Une boucle sur le premier tableau
    récupère le nom et mail Destinataire.
    Un filtre sur le deuxième tableau pour récupérer le Nb et nom des commerciaux + check si envois
    Contruction et display du mail
    Defiltre Db
    Nom et destinataire suivant

    Bàt,

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Par défaut
    Bonjour Mfoxy

    Merci pour ton retour, mais y a t il une autre solution sans scinder le fichier en 2 ?
    Mon niveau vba n est pas top lol.
    Bon confinement.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Par défaut
    Bonjour

    Pas d'âmes charitables pour me sortir de ce pétrin lol ?

  5. #5
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour Winnie,

    Je t'ai expliqué la manière qui ,selon mon expérience, est la plus simple et pérenne à mettre en œuvre.
    Tu as répondu, en gros,je n'ai pas envie de séparer en deux ma liste, une autre solution ?

    La manière dont tu veux travailler,complique la création de ton code spécifique à ton cas ,récupérer des array, dedoublon les arrays, repasser dans la table, compter ligne sous conditions,modification du body du mail,.....
    Ce qui explique ,en partie sûrement, pourquoi tu n'as pas eu de retour autre que le mien, vu le temps que prendrait la réalisation de ton code spécifique selon tes envies, qui excuse moi, mais complique inutilement le développement.

    Je suis quelqu'un qui aime aider, donner de mon temps, mais si le demandeur ne montre pas un minimum de bonne volonté ( 3minutes de travail), une petite recherche sur ce site ( par exemple dans la rubrique contribuez... billet de Marcel) et demande une solution qui ne servira pas à la communauté, je passe mon tour et te souhaite bon courage.

    Bat

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 5
    Par défaut
    Bonjour Mfoxy
    En suivant ton conseil et en flânant sur d'autre forum , j'ai plus ou moins trouvé la solution à mon problème. et Effectivement , la solution de scinder le fichier en 2 avec un onglet ne contenant que les commerciaux avec leur mail facilite le code.

    Merci encore.

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

Discussions similaires

  1. Envoi massif de mails Outlook
    Par MAMANHOU dans le forum VBA Access
    Réponses: 11
    Dernier message: 09/08/2017, 19h26
  2. [VBA] Envoi d'un mail avec Access VB par Lotus Notes
    Par darkphenx dans le forum VBA Access
    Réponses: 5
    Dernier message: 29/10/2007, 09h24
  3. [VBA] Envoi d'un mail avec lotus notes
    Par lou87 dans le forum Général VBA
    Réponses: 5
    Dernier message: 24/10/2007, 10h45
  4. [Automation][VBA]Envoi d'email avec Outlook
    Par andy292929 dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/04/2007, 11h04

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