Envoi d'emails depuis Excel

Bonjour la Team ,

Je m'explique j'utilise un fichier contenant :

1- une feuille contact avec les données concernant les clients (Client ,E-mail ,Nom , Prénom )

2- Une feuille d'inventaire par client ( soit actuellement 10 feuilles mais il se peut que je doive en rajouter )

Je souhaite automatiser l'envoi des e-mails en fonction des mises à jour que j'ai effectué sur les stocks de chacun , c'est à dire qu'une fois que j'ai mis à jour le stock d'un seul client que je puisse lui envoyer sa feuille à lui et pas les autres feuilles du classeur même si le fichier affiche d'autres feuilles .

Pour se faire je pense qu'il faudrait créer une nouvelle feuille ou un nouveau fichier ensuite un clone la feuille travaillée et de récupérer l'adresse du fichier .

J'ai un fichier de base qu'une personne m'a aidé à commencer mais il ne fonctionne pas et le principe du double-clic je trouve çà moyen donc je compte sur vous pour m'aider à le finaliser et le faire tourner .

J'espère avoir été clair si vous avez des questions n'hésitez pas .

Alex

Salut Alexandre-31470,

Sous quelle forme envoies-tu la feuille d'inventaire du client ? En pièce jointe Excel ? En image ?

Tu pourrais lui envoyer directement sous forme de tableau dans le corps de ton mail...

De plus, effectivement le double clique n'est pas incroyable pour gérer ça, je te suggère plutôt de créer un bouton par page, à qui tu affectes ta macro d'envoi de mails

Bonne journée,

Baboutz

Salut Alexandre-31470,

Sous quelle forme envoies-tu la feuille d'inventaire du client ? En pièce jointe Excel ? En image ?

Tu pourrais lui envoyer directement sous forme de tableau dans le corps de ton mail...

De plus, effectivement le double clique n'est pas incroyable pour gérer ça, je te suggère plutôt de créer un bouton par page, à qui tu affectes ta macro d'envoi de mails

Bonne journée,

Baboutz

Tout d'abord merci pour ta réponse .

Je veux l'envoyer en tant que pièce jointe sous forme de feuille Excel .

Oui tu as raison pour le double clic remplacé par des boutons

Alexandre-31470,

J'ai bien vu ton mp mais je te répond ici.

Voici dans l'ordre, les opérations que doit exécuter ta macro:

1/ Création d'un nouveau fichier Excel avec le tableau du client. Avec ce code tu devrais pouvoir te débrouiller :

    Sheets("Client XX").Copy
        ActiveWorkbook.BreakLink Name:= _
        "K:\XXXXX\XXXXX\XXXX\XXXXX\20200121 Inventaires.xlsm" , Type:=xlExcelLinks

2/ Il faut enregistrer ce fichier dans le répertoire que tu veux et le fermer.

3/ On récupère le nom du client ainsi que son adresse mail et on appelle la macro d'envoie de mail

      Name = Worksheets("Contact").Range("C2").Value
      Mail = Worksheets("Contact").Range("B2").Value
      Prenom = Worksheets("Contact").Range("D2").Value
      Call EnvoyerEmail(Name, Mail, Prenom)

4/ On exécute la macro pour ouvrir le mail, renseigner les infos, corps du texte etc...

Sub EnvoyerEmail(ByVal NomContact As String, ByVal Destinataire As String, ByVal PrenomContact As String)

    'On désactive les messages d'alertes d'excel et on désactive le défilement des macros
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    'On déclare les variables
    Dim OutApp As Object
    Dim OutMail As Object
    Dim strbody As String

    'On ouvre un nouvel email
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    'On indique le corps du mail avec du HTML
    strbody = "<HTML><BODY><H4>Dear " & PrenomContact & " " & NomContact & ",</H4></BODY></HTML>" 'Rajouter le reste du coprs du texte dans des balises paragraphe (<p></p>)

    'Si erreur pas au code suivant
    On Error Resume Next

    'Ce code permet l'ajout de la signature dans le corps du texte
    With OutMail
'        .Display 'Affiche la fenêtre du mail | Obligatoire pour ajouter la signature, à masquer si pas nécessaire
        .To = Destinataire 'Le ou les destinataire(s) du mail
'        .CC = "XX.XX@XX.com ; YY.YY@YY.com" 'La ou les personne(s) en copie du mail
        .BCC = "" 'la ou les personne(s) en copie caché du mail
        .Subject = "XXX" 'L'objet du mail
        .HTMLBody = strbody & .HTMLBody 'Le corps du mail + signature
        .Send 'Envoie du mail automatique | À masquer si on veut un envoie de mail manuel
    End With

    Application.DisplayAlerts = True

    On Error GoTo 0

    'on vide les variables objet
    Set OutMail = Nothing
    Set OutApp = Nothing

End Sub

Attention, il te faut mettre la ligne de code pour ajouter la pièce jointe.

5/ Supprimer le fichier pour le client si nécessaire, avec Kill

Bonne chance !

Bonne soirée,

Baboutz

Rechercher des sujets similaires à "envoi emails"