Macro reponse automatique outlook 2003 en vba

triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   -  
 triwix -
Bonjour,

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


A voir également:

27 réponses

triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
ma question à peu de succès,

bonne soirée à tous et à toutes, ne vous couchez pas trop tard, demain boulot!
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Donc vous vous mettez entre l'expéditeur et le destinaire du message ... est-ce bien cela ?
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
Bien le bonsoir Le Pingou,

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
0
hind1987 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir, j'aimerai bien connaître quelqu'un qui maîtrise bien Visual Basic,
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
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
Merci, mais j'avais vu ce post, les soucis est surtout d'extraire l'adresse du destinataire du corp du message
0

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

Posez votre question
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Vous 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
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
C'est un site d'enchère bien connu qui envoie les coordonnées de l'acheteur.

Sous quelle forme je ne sais pas quel language est utilisé, les coordonnées et l'adresse mail sont contenues dans le corp du message envoyé par mail.

Bonne soirée
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
ouui pas de soucis comment je fais? un copier collé suffit?
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,Est-il possible d'avoir une copie d'un message ?
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
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.
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
Bonsoir, voici le lien.

https://www.cjoint.com/?dFtTLXZOlN

J'ai rendu annonyme les coordonnée de la personne

Bonne soirée
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
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
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
Super, merci pour ce travail je vais mettre en application.

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
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
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
0
triwix
 
Merci d'avance,

Je vais regarder ça à tête reposée.

Bonne soirée
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
Bondoir, me revoilà.

Donc la ligne "Dim myFolder As Folder" pose soucis j'ai un mesage "erreur de compilation: type defini par l'utilisateur non defini"

Comment y remèdier
Merci
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
re,

J' ai mis folders c'est bon cette fois -ci, mais j'ai erreur 13 incompatibilité de type, et là je sèche

mERCI
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Pouvez-vous indiquer ou vous avez placé cette procédure ?
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
Je l'ai mise dans un projet que vb à appellé this outlook session
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Ouvrir l'éditeur Visual Basic : touche Alt+F11
Menue Outils clic Références
Contrôler que Microsoft Outlook 12.0 Object Library soit coché.
Si non, chercher dans la liste et cocher la référence puis OK.
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
c'est le 11.0 qui est coché
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
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
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
Bpnsoir,

moi quand je clique j'ai sur la ligne: "myFolder As Folder" le défaut projet ou bibliothèque introuvable, c'est certainement un détail qui bloque mias vu que ce n'est pas mon domaine je suis embèté.

Encore merci

OUi c'est outlook 2003
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
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.
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
oui c'est sur votre document, voici le lien: https://www.cjoint.com/?egxmHoz2Ns
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
Et voici le message d'erreur quand j'execute la macro sur mon outlook: https://www.cjoint.com/?egxzXO1LOJ

Bonne soirée
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci, essayer de supprimer le [As Folder] et vous laissez Dim myFolder.
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
OK, donc sur votre document l'erreur revient sur la ligne du dessous, mais dans outlook ça va plus loin jusqu'à une erreur 5, voyez: https://www.cjoint.com/?egxUzxHBAX
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
Merci pour l'information.
Pour se soir c'est l'heure des braves ...
Demain je vais essayer de trouver les différences entre version 2003 et 2007 !
Je vous tiens au courant.
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
Ok bien entendu, bonne nuit à vous et à demain
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
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
0
triwix Messages postés 296 Date d'inscription   Statut Membre Dernière intervention   22
 
Bonsoir, me revoilà,

J'ai 3 messages qui s'affichent, les voici:

https://www.cjoint.com/?ejxHkJ2tMu

A bientôt

0
triwix
 
Bonjour, c'est presque bon, la première macro fonctionne j'ai juste changé le "pseudo (" en "@" afin de rechercher l'adresse mail et ça me donne comme résultat: @hotmail.com"Dupont@hotmail.com, le message ce crée bien pas de soucis, d'où ma question maintenant comment sélectionner uniquement l'adresse mail qui est après le ".

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
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
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
0
Le Pingou Messages postés 12249 Date d'inscription   Statut Contributeur Dernière intervention   1 458
 
Bonjour,
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]).
0