Macro reponse automatique outlook 2003 en vba
triwix -
Je suis très novice en VBA et surtout sur outlook, donc je souhaiterait une macro sui me fasse gagner beaucoup de temps.
Je vous explique :
Je dois détecter si dans le sujet du message il y a le mot « Bravo » et répondre au mail avec un certain « texte » prédéfini, mais la où ça se complique c'est que je dois trouver l'adresse du destinataire dans le contenu du mail et non répondre à l'expéditeur du message.
Tout cela en automatique dès réception du message.
J'espère que ma requête est compréhensible.
Je pensait chercher le @ dans le message et définir la taille de l'adresse mail en cherchant l'espace au début et entré à la fin de l'adresse mais je ne sais pas comment faire dans une macro.
Je suis à votre disposition pour toute précision, si quelqu'un peut me dépanner ça m'oterait une grosse épine du pied.
Merci
- Macro reponse automatique outlook 2003 en vba
- Réponse automatique thunderbird - Guide
- Réponse automatique gmail - Guide
- Réponse automatique outlook - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Logiciel de sauvegarde automatique gratuit - Guide
27 réponses
- 1
- 2
Une demande porte sur l'automatisation d'Outlook via VBA : détecter le mot « Bravo » dans le sujet et répondre avec un texte prédéfini, tout en extraire l'adresse du destinataire présente dans le corps.
Plusieurs propositions prévoient que la détection du préfixe « Bravo » dans le sujet déclenche l'envoi automatique, et que l'adresse du destinataire soit extraite du corps par une méthode basique d'extraction.
Certaines réponses expliquent comment adapter le code pour rechercher l'adresse entre des délimiteurs spécifiques ou apprendre à diriger la réponse vers le destinataire extrait plutôt que l'expéditeur.
En cas d'erreur, il est recommandé de tester sur des messages de test et de vérifier minutieusement l'extraction de l'adresse avant l'envoi, afin d'éviter les envois au mauvais destinataire.
bonne soirée à tous et à toutes, ne vous couchez pas trop tard, demain boulot!
Donc vous vous mettez entre l'expéditeur et le destinaire du message ... est-ce bien cela ?
Oui en gros c'est cela j'ai une application automatique qui m'envoie les coordonnées du client et je souhaiterait automatiquement envoyer un mail à cette personne lui indiquant la marche à suivre pour recevoir son colis en bon état et quoi faire au cas ou il serait détérioré.
Il n'y a pas de secret j'envoie des oeufs à couver par transporteur, donc les conseils sont nombreux.
Merci et bonne soirée
j'ai un projet à faire là dessus , mé je ne sais pas comment ça fonctionne, j'ai essayé de faire une auto-formation tout en lisant klk articles sur VB , mé j'arrive pas puisk ce qu'il nous demande n'a rien avoir avec
Par ici peut-être : https://forums.commentcamarche.net/forum/affich-1394686-generer-une-reponse-automatique-avec-outlook#1
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionVous dites : j'ai une application automatique qui m'envoie les coordonnées du client
Sous qu'elle forme son ces données ?
Qu'elle est cette application automatique ?
Salutations.
Le Pingou
Je ne suis pas certain qu'un copier/coller va fonctionner, le mieux est de copier le message sur un document Word et de mettre ce dernier sur https://www.cjoint.com/ et poster le lien.
https://www.cjoint.com/?dFtTLXZOlN
J'ai rendu annonyme les coordonnée de la personne
Bonne soirée
Cette procédure récupère l'adresse et l'affiche ...
Sub ParcourirInBox()
Dim oMail
Dim myFolder As Folder
Dim myOlApp As Outlook.Application
Dim myNamespace As NameSpace
Set myOlApp = Outlook.Application
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
For Each oMail In myFolder.Items
Debug.Print oMail.Subject
DebutAdresse = InStr(1, oMail.Body, "Pseudo (")
FinAdresse = InStr(DebutAdresse, oMail.Body, ")")
AdresseEmail = Mid(oMail.Body, DebutAdresse, FinAdresse - DebutAdresse)
MsgBox "Adresse destinataire : " & AdresseEmail
Next oMail
End Sub--
Salutations.
Le Pingou
Comment puis-je faire après pour envoyer un message automatique à ce destinataire à réception du message d'origine? le message est du genre: à réception du colis déballez le devant le livreur afin d'émettre les réserves de rigueur en cas de problème....
Merci bonne soirée
A vous de contrôler le bon fonctionnement de cette procédure car je ne travaille pas acec MSO Outlook !
Assurez-vous que l'adresse extraite soit correcte !
Sub ParcourirInBox()
Dim oMail
Dim myFolder As Folder
Dim myOlApp As Outlook.Application
Dim myNamespace As NameSpace
Dim strHTML As String, LObjet As String
Set myOlApp = Outlook.Application
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
For Each oMail In myFolder.Items
Debug.Print oMail.Subject
DebutAdresse = InStr(1, oMail.Body, "Pseudo (")
FinAdresse = InStr(DebutAdresse, oMail.Body, ")")
AdresseEmail = Mid(oMail.Body, DebutAdresse, FinAdresse - DebutAdresse)
MsgBox "Adresse destinataire: " & AdresseEmail
' objet du courriel
LObjet = "tâches urgentes à effectuer"
' corps du courriel
strHTML = ""
strHTML = strHTML & "<HEAD>"
strHTML = strHTML & "<BODY>"
strHTML = strHTML & "Bonjour ,<BR>"
strHTML = strHTML & "<BR>"
strHTML = strHTML & "<BR>... à réception du colis déballez le devant le livreur"
strHTML = strHTML & "<BR> afin d'émettre les réserves de rigueur en cas de problème...."
strHTML = strHTML & "<BR> ..........."
strHTML = strHTML & "<BR>"
strHTML = strHTML & "<BR>Avec mes respectueuses salutations."
strHTML = strHTML & "</BODY>"
strHTML = strHTML & ""
' préparation de l'envoi
Set mailobj = CreateObject("Outlook.Application")
Set mail = mailobj.CreateItem(olMailItem)
mail.To = AdresseEmail
mail.Subject = LObjet
mail.HTMLBody = strHTML
mail.Display ' pour afficher le courriel avant l'envoie
'***** Activer [mail.send] uniquement lorsque tout est en ordre
' mail.Send
' *********
Next oMail
End Sub
Si vous avez Microsoft Outlook 11.0 Object Library de coché, donc une version 2003 de MSO Outlook, mais en principe il ne doit pas y avoir de problème car je viens d'installer Outlook pour pouvoir tester ma procédure et tout fonctionne correctement.
Merci d'essayer avec le document joint, clic sur le bouton orange et que se passe-t-il ?
https://www.cjoint.com/?egwAefotDO
Si c'est sur le document envoyé, faite le clic et dès que le message d'erreur apparait vous faites une copie d'écran (touche PRINT Screen) et vous coller l'image sur un doc vide que vous mettez sur https://www.cjoint.com/ et poster le lien.
Bonne soirée
Remplacer la procédure par celle-ci après et lancer là.
Faite une copie d'écran des 2 messages qui s'affichent (clic OK pour passer du premier au deuxième).
Sub ParcourirInBox()
Dim oMail
Dim myFolder
Dim myOlApp As Outlook.Application
Dim myNamespace As NameSpace
Dim strHTML As String, LObjet As String
Set myOlApp = Outlook.Application
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
For Each oMail In myFolder.Items
Debug.Print oMail.Subject
debutAdresse = InStr(1, oMail.Body, "Pseudo (")
MsgBox "Position du début : " & debutAdresse
MsgBox "Corps de texte : " & oMail.Body
FinAdresse = InStr(debutAdresse, oMail.Body, ")")
AdresseEmail = Mid(oMail.Body, debutAdresse, FinAdresse - debutAdresse)
MsgBox "Adresse destinataire: " & AdresseEmail
Next oMail
End Sub
J'ai 3 messages qui s'affichent, les voici:
https://www.cjoint.com/?ejxHkJ2tMu
A bientôt
Comment désigner à la macro de s'executer uniquement sur les messages dont l'objet contient le mot "bravo"
Et comment faire effectuer la macro à chaque nouvelle importation de mail?
La macro donne:
Sub ParcourirInBox1()
Dim oMail As Object
Dim myFolder
Dim myOlApp As Outlook.Application
Dim myNamespace As NameSpace
Dim strHTML As String, LObjet As String
'Dim myFolder As Folders
Set myOlApp = Outlook.Application
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
For Each oMail In myFolder.Items
Debug.Print oMail.Subject
debutAdresse = InStr(1, oMail.Body, "@")
FinAdresse = InStr(debutAdresse, oMail.Body, ")")
AdresseEmail = Mid(oMail.Body, debutAdresse, FinAdresse - debutAdresse) 'debutAdresse,
MsgBox "Adresse destinataire: " & AdresseEmail
' objet du courriel
LObjet = "tâches urgentes à effectuer"
' corps du courriel
strHTML = ""
strHTML = strHTML & "<HEAD>"
strHTML = strHTML & "<BODY>"
strHTML = strHTML & "Bonjour ,<BR>"
strHTML = strHTML & "<BR>"
strHTML = strHTML & "<BR>... à réception du colis déballez le devant le livreur"
strHTML = strHTML & "<BR> afin d'émettre les réserves de rigueur en cas de problème...."
strHTML = strHTML & "<BR> ..........."
strHTML = strHTML & "<BR>"
strHTML = strHTML & "<BR>Avec mes respectueuses salutations."
strHTML = strHTML & "</BODY>"
strHTML = strHTML & ""
' préparation de l'envoi
Set mailobj = CreateObject("Outlook.Application")
Set mail = mailobj.CreateItem(olMailItem)
mail.To = AdresseEmail
mail.Subject = LObjet
mail.HTMLBody = strHTML
mail.Display ' pour afficher le courriel avant l'envoie
'***** Activer [mail.send] uniquement lorsque tout est en ordre
'mail.Send
' *********
Next oMail
End Sub
Merci et bon week end
Le code corrigé pour l'extraction de l'adresse en fin. Par contre je ne trouve pas de mot [Bravo] comme référence, et de plus j'ai l'impression que c'est trop aléatoire, il faut trouver un autre critère.
Que faut-il comprendre : chaque nouvelle importation de mail?
Sub ParcourirInBox()
Dim oMail
Dim myFolder
Dim myOlApp As Outlook.Application
Dim myNamespace As NameSpace
Dim strHTML As String, LObjet As String
Set myOlApp = Outlook.Application
Set myNamespace = myOlApp.GetNamespace("MAPI")
Set myFolder = myNamespace.GetDefaultFolder(olFolderInbox)
For Each oMail In myFolder.Items
Debug.Print oMail.Subject
debutAdresse = InStr(1, oMail.Body, "mailto:")
FinAdresse = InStr(debutAdresse, oMail.Body, """")
AdresseEmail = Mid(oMail.Body, debutAdresse + 7, FinAdresse - debutAdresse - 7)
' MsgBox "Adresse destinataire: " & AdresseEmail
' objet du courriel
LObjet = "tâches urgentes à effectuer"
' corps du courriel
strHTML = ""
strHTML = strHTML & "<HEAD>"
strHTML = strHTML & "<BODY>"
strHTML = strHTML & "Bonjour ,<BR>"
strHTML = strHTML & "<BR>"
strHTML = strHTML & "<BR>... à réception du colis déballez le devant le livreur"
strHTML = strHTML & "<BR> afin d'émettre les réserves de rigueur en cas de problème...."
strHTML = strHTML & "<BR> ..........."
strHTML = strHTML & "<BR>"
strHTML = strHTML & "<BR>Avec mes respectueuses salutations."
strHTML = strHTML & "</BODY>"
strHTML = strHTML & ""
' préparation de l'envoi
Set mailobj = CreateObject("Outlook.Application")
Set mail = mailobj.CreateItem(olMailItem)
mail.To = AdresseEmail
mail.Subject = LObjet
mail.HTMLBody = strHTML
mail.Display ' pour afficher le courriel avant l'envoie
'***** Activer [mail.send] uniquement lorsque tout est en ordre
' mail.Send
' *********
Next oMail
End Sub
Dans un premier temps, la procédure qui suit vous averti de l'arrivé d'un nouveau message. La mettre dans le module [ThisOutlookSession] d'Outlook.
Private Sub Application_NewMail()
MsgBox "Vous venez de recevoir un nouveau Mail !", vbExclamation
End Sub
Il faut déterminer une référence valable pour déclencher l'envoi du message désiré (procédure : [ParcourirInBox]).
- 1
- 2