EXCEL : Envoi de mails automatisés

Résolu/Fermé
Damaged - Modifié par Damaged le 15/03/2013 à 10:36
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 - 20 mars 2013 à 13:59
Bonjour à tous,

Pour simplifier, voici tout de suite une version que j'ai rendu anonyme du fichier : http://cjoint.com/?CCpkkUIPc2S
.
Je vous explique mon problème :
.
J'ai une planning d'environ 50 personnes, sur le modèle du fichier.
.
Seulement voilà, j'ai peur d'oublier certains de mes RDV ou que mon contact l'oublie.
.
Du coup j'aimerais savoir s'il est possible par l'intermédiaire de Macros ou autres, d'envoyer automatiquement un mail de rappel (avec un texte automatique du genre "Sujet : Message automatique de rapel. Texte : Bonjour, pour rappel nous avons rendez vous ensemble aujourd'hui le #Date fichier# à #Heure RDV fichier#. Bien à vous, ....") le jour du rendez vous aux 2 personnes concernées à savoir moi et mon contact si la date du RDV correspond à la date en haut à droite
.
Pour infos les adresses mails sont sur la 2nd page, et j'utilise Outlook pour gérer mes mails.
.
Mais je ne sais si c'est possible pour 2 raisons :
.
1. Le document se met-il à jour automatiquement à minuit (donc le mail partirait à minuit) ou ne se met-il à jour que à l'ouverture de celui-ci ? De ce fait il faudrait que j'ouvre le document pour que les mails partent.
.
2. Est-il possible d'extraire des données d'une cellule pour les insérer dans le mail (Par exemple la date et l'heure de RDV)
.
En espérant pouvoir être aider, merci d'avance :)
A voir également:

16 réponses

Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
18 mars 2013 à 08:29
Bonjour,

J'ai trouvé ce sujet en faisant une recherche,
Je suis plus ou moins dans le même cas donc j'aimerais relancer ce sujet plutôt que de créer un doublon.

Merci, et bonne journée
0
Mike-31 Messages postés 18353 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 31 décembre 2024 5 110
18 mars 2013 à 10:57
Salut,

Avec Excel tout ou presque tout est possible.
Je te conseille de passer directement en CDO, plus facile à gérer et automatiser l'envoi.
Dans l'exemple ci joint il suffit de saisir en B3 l'adresse destinataire, en C1 le SMTP de son fournisseur d'accès et éventuellement un texte dans les cellules C3 à C10.
l'envoi à plusieurs destinataire n'est pas un problème et le corps du message peut être saisi dans le code comme le SMTP, ainsi que le déclenchement de l'envoi peut se faire automatiquement sur un critère.

A tester et on en reparle

https://www.cjoint.com/c/CCsk3utDxuP
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
18 mars 2013 à 12:00
Bonjour Mike,

Pour moi ton fichier est d'une grande aide, seulement j'ai un petit soucis au niveau des adresses mails !

En effet il ne s'agit ni de free, ni de orange ect.. il s'agit d'une boite outlook avec pour extansion le nom de la boite (ex : Nom.Prenom@Nomsociete.com)

J'ai essayé de rentrer ça dans les cellules, seulement j'ai un message d'erreur : 553 sorry, that domain isn't in my list of allowed rcpthost (#5.7.1)

Je n'ai pas le moindre idée de ce que je peux y faire... Peux-tu m'aider ?

Merci.
0
Mike-31 Messages postés 18353 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 31 décembre 2024 5 110
Modifié par Mike-31 le 18/03/2013 à 13:03
Re,

En B2 ton adresse mail d'expéditeur

et en B3 adresse mail du destinataire, pour tester tu peux mettre la tienne

Nom.Prenom@Nomsociete.com

en C1 tu dois avoir un SMTP de l'entreprise qui devrait ressembler à

SMTP.Nomsociete.com

pour t'assurer de ton smtp tu peux aller voir sur une adresse de messagerie sur Outlook/propriété/je crois que c'est sur un onglet serveur
A+
Mike-31

Une période d'échec est un moment rêvé pour semer les graines du savoir.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
18 mars 2013 à 13:18
Ok merci j'avance,

Pour le SMTP j'ai mis SMTP.Outlook.com et ça à l'air de fonctionner.

Un petit soucis avec l'authentification, mais j'ai vu que tu avais déjà tout préparé dans le VBA, donc j'ai pu résoudre le problème facilement.

Cependant ce n'ai pas fini, maintenant lorsque je clique sur le bouton j'ai ce message qui apparait : "Compil Error : Variable not defined"
Et dans le VBA :

End Sub

Sub Procédure_Envoi()
Dim messageHTML As Variant
Dim objMessage As Variant
Dim piece_jointe As Variant

Ce que j'ai mis en gras se surligne en jaune. (Encore désolé mais je suis plus que novice en VBA)

Que puis-je faire ?

Merci.
0
Mike-31 Messages postés 18353 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 31 décembre 2024 5 110
18 mars 2013 à 15:43
Re,

Il est normal que Sub Procédure_Envoi() se mette en jaune si une erreur est rencontrée dans le code.
pour détecter la ligne en erreur aller dans le visual basic et blocage/activer le pas à pas détaillé

mais ton SMTP "SMTP.Outlook.com " ne peut être bon

ouvre outlook, puis je crois que c'est dans outils/comptes
ou tu devrais trouver ton adresse mail, clic dessus/propriété/ensuite clic sur tes onglets, je crois que c'est l'onglet serveur ou tu récupéreras les données de ton courrier sortant (SMTP) que tu rapporteras en C1
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
Modifié par Villette54 le 18/03/2013 à 16:30
Ok, pour l'erreur VBA j'ai ceci (en gras) qui se surligne :

objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = cdoBasic
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = "***"
objMessage.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "***"

Huuum, question : dois-je laisser les " " autour de mon nom d'utilisateur et de mon mot de passe ?


Sinon pour mon SMTP, je ne trouve pas... Car dans l'outlook professionnel mis en place dans mon entreprise je n'ai pas l'onglet "outils" et je ne trouve rien lié aux comptes.
La seule info que je trouve c'est "Serveur Microsoft exchange : eu-casarray.nomsociété.net"

Encore désolé pour le dérangement, j'ai l'impression de te demander 150 fois la même chose mais de ne jamais comprendre !

Merci d'avance.
0
Morgothal Messages postés 1236 Date d'inscription jeudi 22 avril 2010 Statut Membre Dernière intervention 19 mai 2015 183
20 mars 2013 à 09:26
Bonjour à tous,
Je me pose un peu la, mais as-tu pensé à cocher la librairie CDO dans Outils>Références ?
Le nom de la librairie : "Microsoft CDO for Windows XXXX Library"
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
20 mars 2013 à 10:31
Effectivement je ne l'avais pas fais, mais j'ai changé de macro à l'heure actuelle.

Ce problème est donc résolu, mais il m'en reste d'autre (Cf. Un peu plus bas) peut-être pourras-tu m'aider !
0
Mike-31 Messages postés 18353 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 31 décembre 2024 5 110
18 mars 2013 à 21:41
Re,

Dans le code, ces lignes sont isolées et ne doivent être libérées et renseignées que dans le cas ou la connexion nécessite une authentification(dans ce cas l'apostrophe en tête de ligne doit être supprimée)

soit remettre l'apostrophe en tête de ligne ou supprimer ces lignes

Il est impératif de connaitre le SMTP pour renseigner la cellule C1 ou directement l'insérer dans le code
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
19 mars 2013 à 08:23
Bonjour Mike,

J'ai du retirer l'apostrophe et renseigner ces lignes justement car j'ai eu un message d'erreur qui me disait que je devais m'authentifier !

Je ne trouve rien de plus pour mon SMTP, je vais laisser tomber ça sera plus simple ! J'enverrais mes mails à la main et pis c'est tout.

Merci encore pour ton aide, et pour le temps que tu m'as consacré.

Bonne journée
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
Modifié par Villette54 le 19/03/2013 à 14:17
Ce post est juste à titre informatif pour ceux qui chercheraient à faire la même chose.

J'ai finalement réussi à faire ce que je voulais à savoir un bouton qui envoi une page Excel voici le VBA :

Sub PDFMAIL()

Application.DisplayAlerts = False

Dim ObjOutlook As Object
Dim oBjMail
Dim pj As String
Dim Corps As String


Sheets("Feuil3").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"P:\AAA Test\" & [B2] & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False _

pj = "P:\AAA Test\" & [B2] & ".pdf"

Set ObjOutlook = CreateObject("outlook.application")
Set oBjMail = ObjOutlook.CreateItem(olMailItem)

If pj = "Faux" Then Exit Sub
If VarType(pj) = vbBoolean Then Exit Sub

Corps = "Bonjour, " & "<br><br>" _
& "1000ème TEST DE CETTE MERDEEEEEEEEEEEE " & "<br>" _
& "je reste à votre disposition pour tous renseignement complémentaire " & "<br>" _


With oBjMail

.To = [A2].Value
.CC = [A3].Value
.Subject = "test 1, 2 .. 3 ? "
.Attachments.Add pj
.HTMLBody = ""
.BodyFormat = 2
.GetInspector.CommandBars.Item("Insert").Controls("Signature").Controls(1).Execute
.HTMLBody = Corps & oBjMail.HTMLBody
.Send

End With

Kill "P:\AAA Test\" & [B2] & ".pdf"
Application.DisplayAlerts = True


End Sub

Voilà, si j'ai réussi alors que je n'avais absolument AUCUNE notion en VBA avant cette semaine, juste grâce à l'aide de Mike (les explications que tu avais dans le premier VBA m'ont beaucoup aidé) et d'un peu de persévérance c'est que tout le monde peut réussir.

Bonne journée !
0
Mike-31 Messages postés 18353 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 31 décembre 2024 5 110
19 mars 2013 à 15:51
Re,

essaye de simplifier en remplaçant l'adresse de la pièce jointe "P:\AAA Test\" & [B2] & ".pdf"
par la syntaxe ActiveWorkbook.Path & "\" & [B2] & ".pdf" ce qui t'évitera de saisir le chemin du fichier et surtout de te tromper



Sub PDFMAIL()
Application.DisplayAlerts = False
Dim ObjOutlook As Object
Dim oBjMail
Dim pj,Corps As String
Sheets("Feuil3").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "\" & [B2] & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False _

pj = ActiveWorkbook.Path & "\" & [B2] & ".pdf"

Set ObjOutlook = CreateObject("outlook.application")
Set oBjMail = ObjOutlook.CreateItem(olMailItem)

If pj = "Faux" Then Exit Sub
If VarType(pj) = vbBoolean Then Exit Sub
Corps = "Bonjour, " & "<br><br>" _
& "1000ème TEST DE CETTE MERDEEEEEEEEEEEE " & "<br>" _
& "je reste à votre disposition pour tous renseignement complémentaire " & "<br>" _

With oBjMail
.To = [A2].Value
.CC = [A3].Value
.Subject = "test 1, 2 .. 3 ? "
.Attachments.Add pj
.HTMLBody = ""
.BodyFormat = 2
.GetInspector.CommandBars.Item("Insert").Controls("Signature").Controls(1).Execute
.HTMLBody = Corps & oBjMail.HTMLBody
.Send
End With
Kill ActiveWorkbook.Path & "\" & [B2] & ".pdf"
Application.DisplayAlerts = True

End Sub

0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
20 mars 2013 à 08:34
Salut Mike,

Oui tu as raison écrire le chemin peut-être un problème, surtout que j'ai assez souvent l'erreur : Run time error : '-2147024773 (87007b) Document not Saved
Et je ne sais absolument pas à quoi elle est du, puisque des fois l'erreur survient, et des fois le mail s'envoie sans soucis. Si tu as une idée, je suis preneur d'ailleurs.

Par contre si j'ai choisit cette option, c'est que je pense exporter cette macro à d'autres documents et pour certains je vais devoir garder une copie de la pièce jointe (J'ai juste à supprimer la ligne "Kill ..." dans la macro) et avec ta syntaxe je ne sais pas où va se sauvegarder le fichier, ce qui peut-être problématique !

Si tu as des solutions à ces problèmes (toi ou quelqu'un d'autre) je suis preneur !

Merci d'avance
0
Mike-31 Messages postés 18353 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 31 décembre 2024 5 110
20 mars 2013 à 08:49
Re,

"Run time error"= "erreur de délai d'exécution"
tout dépend de la ligne qui génère l'erreur, il suffit de mettre un temporisateur de sorte à retarder d'une seconde l'application de la ligne afin de laisser le temps à la ligne précédente de terminer l'action

cette syntaxe ActiveWorkbook.Path permet d'enregistrer la copie dans le même répertoire que le fichier source
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
20 mars 2013 à 09:19
Merci pour ces précisions !

Je viens d'essayer avec ta syntaxe mais l'erreur reste la même.

La ligne qui génère l'erreur est :

Sheets("RDV du jour").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "\" & [B2] & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Comment puis-je mettre un délai ?

J'aurais une autre question pour toi, comment mettre un message de confirmation avant l'envoi du mail (Ex : une boite de dialogue qui survient au clic et qui demande "Êtes-vous sûr de vouloir envoyer ce mail ?" Oui - Non)

Merci.
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
Modifié par Villette54 le 20/03/2013 à 12:08
Je me répète mais j'ai vraiment besoin d'aide...

Voici mon VBA complet :

Sub PDFMAIL()

Application.DisplayAlerts = False

Dim ObjOutlook
Dim oBjMail
Dim pj As String
Dim Corps As String


Sheets("RDV").ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ActiveWorkbook.Path & "\" & [B2] & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False


pj = ActiveWorkbook.Path & "\" & [B2] & ".pdf"

Set ObjOutlook = CreateObject("outlook.application")
Set oBjMail = ObjOutlook.CreateItem(olMailItem)

If pj = "Faux" Then Exit Sub
If VarType(pj) = vbBoolean Then Exit Sub

Corps = [D13].Value & vbCrLf & "<br>" _
& [D14].Value & vbCrLf & "<br>" _
& [D15].Value & vbCrLf & "<br>" _
& [D16].Value & vbCrLf & "<br>" _
& [D17].Value & vbCrLf & "<br>" _
& [D18].Value & vbCrLf


With oBjMail

.To = [D5].Value
.CC = [D7].Value
.Bcc = [D9].Value
.Subject = [D11].Value
.Attachments.Add pj
.HTMLBody = ""
.BodyFormat = 2
.GetInspector.CommandBars.Item("Insert").Controls("Signature").Controls(1).Execute
.HTMLBody = Corps & oBjMail.HTMLBody
.Send

End With

Kill ActiveWorkbook.Path & "\" & [B2] & ".pdf"
Application.DisplayAlerts = True

Exit Sub
errorHandler:
MsgBox Err.Description

MsgBox "Le mail a été bien envoyé !"

End Sub



Ce que j'ai mis en gras, c'est l'endroit où est localisé mon erreur, à savoir :
VBA Runtime error : '-2147024773 (8007007b)

Et pour infos : https://www.computerperformance.co.uk/

D'après ce que j'ai compris, il manquerait quelque chose, un élément, un caractère ou je ne sais quoi dans cette partie de mon VBA.. Mais n'étant qu'un débutant je n'ai pas la moindre idée de ce que cela pourrait être.

En espérant que quelqu'un puisse m'aider, merci.
0
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
20 mars 2013 à 13:59
Problème réglé.

Merci quand même.
0