Envoyer un email avec Excel version améliorée
Coucou les spécialistes d'Excel
Je fais appel à votre science ! Je débute dans le VBA. Je n'ai pas nécessairement vocation à devenir spécialiste car ce n'est en rien mon métier
Voilà ma complainte : J'ai une liste importante de fournisseurs à contacter. Je vais faire un premier mailing général pour demander de signer un document que je vais joindre à ce mail.
Ensuite je vais effectuer des relances. Néanmoins, je souhaiterais éviter de relancer les fournisseurs que j'ai déjà contactés. Aussi, la formule (avec mes mots) serait la suivante : rechercher la colonne "mail envoyé à telle date" si vide alors ré-envoyer le mail.
Et faire ainsi de suite car je vais faire 3 relances en tout. Donc à chaque fois, il faudrait que la formule puisse vérifier si la première, la seconde relance ont potentiellement marché puis ré-envoyer le mail le cas échéant.
Est ce qu'il faut que je fasse deux boutons ? Il serait possible de faire une fusion de tout ça ?
Je vous transmets mon fichier pour comprendre ma demande et mon tableau. J'ai trouvé la formule en bossant pour envoyer le mail avec Excel en attachant le document que je vais adresser aux fournisseurs
Par ailleurs quand j'envoie le mail, j'ai trouvé également comment modifier le texte du mail. Néanmoins, je n'ai pas trouvé comment mettre en gras une partie. Par exemple : merci de m'envoyer les éléments pour le XX/XX/2019. SI je veux mettre uniquement la date en gras, comment ça marche ?
Enfin, si jamais ma demande est impossible, j'ai bien pensé à le faire à la mano en filtrant et en ne laissant qu'apparaître que les entreprises concernées par un éventuel renvoi. Néanmoins, en procédant au test, je me suis rendu compte que même si je filtre et je sélectionne que les entreprises concernées, cela envoie quand même à tout le monde
Normal car je pense que le filtre n'est qu'une vision pour l'utilisateur. Quoiqu'il arrive ma formule sélectionne toute la colonne...Je ne sais pas si je suis clair
Merciiiiiii pour votre aide !!!!
Bonjour,
Par ailleurs quand j'envoie le mail, j'ai trouvé également comment modifier le texte du mail. Néanmoins, je n'ai pas trouvé comment mettre en gras une partie. Par exemple : merci de m'envoyer les éléments pour le XX/XX/2019. SI je veux mettre uniquement la date en gras, comment ça marche ?
Sur ce point précis, il faut créer le mail avec htmlbody et non body, et encadrer le texte à mettre en gras par les balises html <b>_______</b>
Plus globalement :
- quelle messagerie utilises-tu ? outlook ? ou bien est-ce que tu passes par Thunderbird ? CDO ? il est dommage de ne pas avoir le début de ton code (sans informations confidentielles)
- où se trouve le critère qui permet de relancer ?
J'étais de chez moi !
Vu
Donc tu utilises outlook.
1-
je reviens sur ma question : quel est le critère qui permet de relancer ou pas ? j'ai compris qu'il s'agissait d'un filtre, mais le quel ?
Il faudra juste adapter ceci pour y inclure le critère
For f = LBound(ListeDest(), 1) To UBound(ListeDest(), 1)
sListeDest = sListeDest & ";" & ListeDest(f, 1)
NextUn conseil, essaie de mieux indenter ton code afin d'y voir plus clair
2-
pour la mise en forme, gras notamment
-- remplace .body par .htmlbody
-- tu peux aussi mettre
.htmlbody = "bla bla bla" & .htmlbodyet ainsi récupérer à la fin ta signature
-- remplacer tous les chr(10) par "<br/>" qui est la balise html pour le retour à la ligne
-- je n'ai pas vu où était m'envoyer les éléments ... ; pour mettre la date en gras mettre :
m'envoyer les éléments pour le <b>XX/XX/2019</b>Super pour le retour à la ligne
Le "m'envoyer les éléments pour XX" était un exemple. In concreto c'est le terme "protocole" que j'aurais souhaiter mettre en gras
Pour le filtre c'était une idée ! Ma première action aurait été que le formule check si le premier envoi est effectué, puis si j'ai le document (colonne présence du doc) puis renvoyer. Et donc ça renverrait uniquement sur les entreprises concernées.
SINON l'idée 2 est de ne renvoyer que sur les entreprises filtrées (si c'est possible). Et dans ce cas là ce serait uniquement le filtre sur la colonne K du coup permettant de checker si le doc est présent ou pas !
Merciii en tous les cas c'est top de vous décarcasser pour moi
Je regarde demain ...
Une proposition basée sur le scénario :
Ma première action aurait été que le formule check si le premier envoi est effectué, puis si j'ai le document (colonne présence du doc) puis renvoyer. Et donc ça renverrait uniquement sur les entreprises concernées.
Sub EnvoiMail()
Dim ListeDest()
Dim ListeComment()
Dim f As Long
Dim oMsgApp As Object
Dim oMsg As Object
Dim sListeDest As String
Dim sFichier As String
sFichier = Application.GetOpenFilename(, , "Sélectionner le fichier à envoyer")
If sFichier = "" Then
MsgBox "Aucun fichier sélectionné, opération annulée"
Exit Sub
End If
Set oMsgApp = CreateObject("Outlook.Application")
ListeDest() = Range("Base[mail]")
sListeDest = ""
For f = LBound(ListeDest(), 1) To UBound(ListeDest(), 1)
With ActiveSheet.ListObjects(1)
If .ListColumns("Document est il présent ?").DataBodyRange.Rows(f).Value <> "OUI" Then
sListeDest = sListeDest & ";" & ListeDest(f, 1)
If .ListColumns("Premier mail envoyé").DataBodyRange.Rows(f).Value = "" Then
.ListColumns("Premier mail envoyé").DataBodyRange.Rows(f).Value = Now
ElseIf .ListColumns("1ère relance").DataBodyRange.Rows(f).Value = "" Then
.ListColumns("1ère relance").DataBodyRange.Rows(f).Value = Now
ElseIf .ListColumns("2ème relance").DataBodyRange.Rows(f).Value = "" Then
.ListColumns("2ème relance").DataBodyRange.Rows(f).Value = Now
Else
.ListColumns("3ème relance").DataBodyRange.Rows(f).Value = Now
End If
End If
End With
Next
Set oMsg = oMsgApp.CreateItem(0)
With oMsg
.To = sListeDest
.Attachments.Add sFichier
.Subject = "Protocole de sécurité"
' texte à ré-écrire :
.htmlBody = "Madame, Monsieur,<br><br><b>pour mettre en gras</b> retour en maigre" & .htmlBody
.display '.Send pour envoi direct
End With
Set oMsg = Nothing
oMsgApp.Quit
Set oMsgApp = Nothing
MsgBox "Mail envoyé"
End Sub
Waooouuuuuu je vais regarder ça demain au boulot ! G compris la formule en tous les cas !!! tu es mon héros (ou héroine en fonction du genre
Que j'aimerais avoir vos connaissances sur ce domaine particulier d'excel ! Je pense que ça doit faire gagner un temps fou au taff!!!!!
c'est super ! En plus ça marque même l'heure et le jour de l'envoi ! J'avais pas capté !!
Mercii encore !!!
Merci pour ce retour