Macro reponse automatique outlook 2003 en vba

triwix Messages postés 306 Statut Membre -  
 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


27 réponses

  • 1
  • 2
Résumé de la discussion

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.

Bobot (l'IA à votre service)
  1. triwix Messages postés 306 Statut Membre 22
     
    ma question à peu de succès,

    bonne soirée à tous et à toutes, ne vous couchez pas trop tard, demain boulot!
    0
  2. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Donc vous vous mettez entre l'expéditeur et le destinaire du message ... est-ce bien cela ?
    0
    1. triwix Messages postés 306 Statut Membre 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
  3. hind1987 Messages postés 2 Statut Membre
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
    1. triwix Messages postés 306 Statut Membre 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
    2. triwix Messages postés 306 Statut Membre 22
       
      ouui pas de soucis comment je fais? un copier collé suffit?
      0
  6. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,Est-il possible d'avoir une copie d'un message ?
    0
  7. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
    1. triwix Messages postés 306 Statut Membre 22
       
      Bonsoir, voici le lien.

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

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

      Bonne soirée
      0
  8. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
    1. triwix Messages postés 306 Statut Membre 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
  9. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
    1. triwix
       
      Merci d'avance,

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

      Bonne soirée
      0
    2. triwix Messages postés 306 Statut Membre 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
    3. triwix Messages postés 306 Statut Membre 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
  10. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Pouvez-vous indiquer ou vous avez placé cette procédure ?
    0
    1. triwix Messages postés 306 Statut Membre 22
       
      Je l'ai mise dans un projet que vb à appellé this outlook session
      0
  11. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
    1. triwix Messages postés 306 Statut Membre 22
       
      c'est le 11.0 qui est coché
      0
  12. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
    1. triwix Messages postés 306 Statut Membre 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
  13. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
    1. triwix Messages postés 306 Statut Membre 22
       
      Et voici le message d'erreur quand j'execute la macro sur mon outlook: https://www.cjoint.com/?egxzXO1LOJ

      Bonne soirée
      0
  14. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Merci, essayer de supprimer le [As Folder] et vous laissez Dim myFolder.
    0
    1. triwix Messages postés 306 Statut Membre 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
  15. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
    1. triwix Messages postés 306 Statut Membre 22
       
      Ok bien entendu, bonne nuit à vous et à demain
      0
  16. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
  17. 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
  18. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
  19. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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
  • 1
  • 2