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
- Messages
- 1'025
- Excel
- 2016 FR // 365
- Inscrit
- 19/04/2019
- Emploi
- Étudiant en 5e année d'école d'Ingénieur
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
- Messages
- 1'025
- Excel
- 2016 FR // 365
- Inscrit
- 19/04/2019
- Emploi
- Étudiant en 5e année d'école d'Ingénieur
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