IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Outlook Discussion :

Réponse automatique au destinataire d'un email reçu en copie


Sujet :

VBA Outlook

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Réponse automatique au destinataire d'un email reçu en copie
    Bonjour à tous,

    Je souhaiterais créer une règle dans Outlook qui me permette ceci :

    - Automatiser l'envoi d'une réponse à partir d'un email reçu
    - Pour des emails contenant certains objets uniquement
    - Au destinataire de l'email reçu et non pas à l'expéditeur

    Je m'explique :

    Je reçois sur mon adresse "abc@abc.com" une copie d'email envoyée

    De :
    "xyz@xyz.com"
    A :
    "uvw@uvw.com"

    Je souhaiterais automatiser l'envoi d'une réponse de mon adresse "abc@abc.com" à "uvw@uvw.com"

    Je n'éprouve aucun problème à automatiser l'envoi et à créer ma règle, mais ma difficulté est ici que Outlook envoie sa réponse de "abc@abc.com" à "xyz@xyz.com".

    Existe-il un script permettant de bypasser "xyz@xyz.com", pour n'envoyer de réponse automatique qu'à "uvw@uvw.com" ? Je débute...

    D'avance merci ;-)

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Tjs pas de réponse ?

    Please, je galère encore sur ce code...

    Ne devrais-je pas utiliser la fonction "Recipient.Address" quelque part à la place de "Sender.address" ?

    Ou alors "ReplyAll" pour répondre à tous automatiquement et inclure le recipient ?

    Je vous remercie d'avance !

  3. #3
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    as-tu un début de code ?

    tu énumère des solutions possibles mais les as-tu essayé ?

    par sur un début de code et ensuite on pourra te guider

    Dolphy

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bonjour et merci pour ta réponse,

    J'ai trouvé un message déposé par qq ayant un problème similaire, mais il me semble que le script proposé est trop complexe pour ce que je veux faire :

    ************************
    Bonjour,

    Je souhaiterais configurer une réponse automatique un peu
    particulière sur un mail.

    Je reçois une copie de mail (en CCI) adréssé par un ami à une tierce
    personne.
    A la réception de ce mail, je souhaiterais envoyer automatiquement
    un mail à cette tierce personne, mais quand je lance une règle avec
    une réponse automatique sur la réception de ce mail (avec un filtre
    sur l'objet par exemple), c'est mon ami qui reçois mon mail.

    Mon ami envoie donc un mail du type :
    De : Mon ami
    A : Tierce personne
    CCI : moi

    Je reçois donc le mail avec comme info :
    De : Mon Ami
    A : Tierce personne

    Quand je fait une regle de réponse sur ce mail, c'est mon ami qui
    reçois le mail , pas la tierce personne.

    J'ai vu qu'il y avais des scripts sur outlook. Est il possible d'en
    créer un qui récupère l'adresse de la tierce personne dans le mail
    que je recois pour lui renvoyer la réponse automatique ? Si oui
    existe t'il déjà et ou ? s'il n'existe pas, y a t'il un tuto pour
    apprendre a programmer ces script en 10 lecons ?
    J'ai déjà fait un peu de programmation, ça me fait pas trop peur,
    mais si c'est déjà fait ou infaisable, autant pas commencer

    Merci pour votre aide
    ***********************************

    pour executer un script à partir d'une règle de message
    "executer un script"

    Le script doit comporter un argument MailItem (ou MeetingItem) et se trouver
    soit dans thisoutlooksession soit dans un module


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     Sub RunAScriptRuleRoutine(MyMail As MailItem)
    Dim strID As String
    Dim olNS As Outlook.NameSpace
    Dim msg As Outlook.MailItem
     
     
    strID = MyMail.EntryID
    Set olNS = Application.GetNamespace("MAPI")
    Set msg = olNS.GetItemFromID(strID)
    ' do stuff with msg, e.g.
    MsgBox msg.Body
     
     
    Set msg = Nothing
    Set olNS = Nothing
    End Sub

    Ensuite tu dois rechercher dans le body du mail ou son HTMLBODY selon le
    paramètre BodyFormat,

    la zone où se trouve l'adresse Email de la tierce personne,il faut trouver
    le @ et le premier espace avant et celui après pour délimiter l'adresse.

    quand tu as cette adresse tu peux créer ton mail.

    Tu auras besoin des fonctions texte suivantes MID, INSTR

    bon courage


    --
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Have a nice day
    Oliv'


    Je n'ai pas besoin d'aller consulter le corps du mail mais juste son head, en inversant le "SenderEmailAddress" par "RecipientEmailAdress"

    Par ailleurs, la "Tierce personne" n'est jamais pareille dans mon cas.

  5. #5
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,
    2 solutions soit tu utilises les actions : répondre, transférer, soit tu crées un nouveau mail.

    ensuite tu ajoutes les recipient destinataires

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bonjour Oliv',

    Je ne comprends pas bien ta réponse :

    Tu parles de créer une nouvelle règle pour transférer à la place de répondre ?

    Dans ce cas, Outlook me demande d'y inclure les recipient destinataires manuellement.

    Le problème reste donc le même puisque je ne peux pas automatiser la tâche ???

    Ou tu parles d'un script en rule ?

    Merci d'avance,

  7. #7
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,
    Toujours avec le script que tu a cité. celui ci permet de faire des choses sur le mail reçu, or c'est pas le mail reçu que tu envois mais soit unz réponse, soit un transfert de ce mail, ce qui inclu dans ces 2 cas la copie du mail et éventuellement des PJ. ou alors tu crées un nouveau mail dans lequel tu mets ton texte de réponse et les destinataires.

    Pour récupérer les éléments du message d'origine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sujet= msg.subject
    expediteur = msg.SenderEmailAddress
    les destinataires c'est une collection
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    For each destinataire in msg.recipients
    msgbox destinataire
    next destinataire
    ps dans le code cité MyMail et MSG désignent tous les 2 le même mail mais le second permet d'interroger certaines propriétés sans avoir le message de sécurité de OUTLOOK.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set LeMailTransfere = MSG.Forward
    LeMailTransfere.Recipients.add "destinataire@fai.fr"
    LeMailTransfere.Send
    ok ?

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Presque OK,

    Franchement un grand merci pour tout mais je débute et j'ai vraiment pas mal de difficultés avec le code... Est-ce que si j'exécute ce script dans ThisOutlookSession en parallèle avec ma règle de réponse automatique, ça pourrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub RepToRec (MyMail As MailItem)
     
        Dim LeMailTransfere As Outlook.MailItem
        Dim destinataire As msg.Recipients
     
        For Each destinataire In msg.Recipients
        MsgBox destinataire
        Next destinataire
     
        Set LeMailTransfere = msg.Forward
        LeMailTransfere.Recipients.Add "destinataire@fai.fr"
        LeMailTransfere.Send
     
    End Sub
    Je me plante peut-être complètement mais bon... Je débute et j'essaye de reconstituer les morceaux avec ce que tu m'as donné. L'idéal serait que je puisse bénéficier d'un code "tout fait" que je peux copier/coller dans "ThisOutlookSession".

    Merci encore,

  9. #9
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,
    En fait il faut que tu expliques quelle type de réponse tu veux faire l'équivalent de répondre, de transferéer ou autre chose ?

    En faisant répondre ton mail va avoir une section
    ------------------------------------------------------------------
    De : toto
    Envoyé : lundi 17 mars 2008 11:43
    À : Olivier
    Cc : Laurent
    Objet : PST
    Voici ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Sub RepToRec(MyMail As MailItem)
    '---------------------------------------------------------------------------------------
    ' Procedure : RepToRec
    ' Author    : Oliv'
    ' Date      : 16/04/2008
    ' Purpose   : script a executer avec une règle pour répondre au destinataires A
    '---------------------------------------------------------------------------------------
    '    
    Dim LeMailTransfere As Outlook.MailItem
    Dim strID As String
    Dim olNS As Outlook.NameSpace
    Dim msg As Outlook.MailItem
     
     
    strID = MyMail.EntryID
    Set olNS = Application.GetNamespace("MAPI")
    Set msg = olNS.GetItemFromID(strID)
     
        Set LaReponse = msg.Reply
        'il faut supprimer les destinataires par defaut
        For I = LaReponse.Recipients.Count To 1 Step -1
        LaReponse.Recipients.Remove I
        Next I
     
        'on Ajoute des destinataire "A" du mail d'origine
        For Each destinataire In msg.Recipients
        'MsgBox destinataire
        If destinataire.Type = olTo Then
        LaReponse.Recipients.add destinataire.Address
        End If
     
        Next destinataire
    'affiche la réponse à commenter après test
        LaReponse.Display
    ' à decommenter pour envoyer
    '    LaReponse.Send
    Set msg = Nothing
    Set olNS = Nothing
    Set LaReponse = Nothing
    End Sub
     
    Sub test_script()
    Dim Oitem As Outlook.MailItem
    Set Oitem = ActiveInspector.CurrentItem
    RepToRec Oitem
    End Sub

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    CA Y EST !!! J'AI REUSSI !!!

    Voici la dernière modification apportée afin de pouvoir y inclure mon modèle à envoyer (sur base du code initial de Oliv') :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Sub RepToRec(MyMail As MailItem)
    '---------------------------------------------------------------------------------------
    ' Procedure : RepToRec
    ' Author    : Oliv'
    ' Date      : 16/04/2008
    ' Purpose   : script a executer avec une règle pour répondre au destinataires A
    '---------------------------------------------------------------------------------------
    '
    Dim LaReponse As Outlook.MailItem
    Dim strID As String
    Dim olNS As Outlook.NameSpace
    Dim msg As Outlook.MailItem
     
     
    strID = MyMail.EntryID
    Set olNS = Application.GetNamespace("MAPI")
    Set msg = olNS.GetItemFromID(strID)
     
        Set LaReponse = msg.reply
        'il faut supprimer les destinataires par defaut
        For I = LaReponse.Recipients.Count To 1 Step -1
        LaReponse.Recipients.Remove I
        Next I
     
        'on Ajoute des destinataire "A" du mail d'origine
        For Each destinataire In msg.Recipients
        'MsgBox destinataire
        If destinataire.Type = olTo Then
        Set LaReponse = Application.CreateItemFromTemplate("C:\download\LaReponse.oft")
        LaReponse.Recipients.Add destinataire.Address
        End If
     
        Next destinataire
    'affiche la réponse à commenter après test
        LaReponse.Display
    ' à decommenter pour envoyer
        LaReponse.Send
    Set msg = Nothing
    Set olNS = Nothing
    Set LaReponse = Nothing
    End Sub
     
    Sub test_script()
    Dim Oitem As Outlook.MailItem
    Set Oitem = ActiveInspector.CurrentItem
    RepToRec Oitem
    End Sub
    Encore un tout grand merci, tu viens de m'épargner de longues heures de travail répétitif !!!

    @+

  11. #11
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    C'est bien mais faut faire un peu de ménage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    Sub RepToRec(MyMail As MailItem)
    '---------------------------------------------------------------------------------------
    ' Procedure : RepToRec
    ' Author    : Oliv'
    ' Date      : 16/04/2008
    ' Purpose   : script a executer avec une règle pour répondre au destinataires A
    '---------------------------------------------------------------------------------------
    '
    Dim LaReponse As Outlook.MailItem
    Dim strID As String
    Dim olNS As Outlook.NameSpace
    Dim msg As Outlook.MailItem
     
     
    strID = MyMail.EntryID
    Set olNS = Application.GetNamespace("MAPI")
    Set msg = olNS.GetItemFromID(strID)
     
    ''inutile puisque tu utilises un modele 
    ''    Set LaReponse = msg.reply
    ''    'il faut supprimer les destinataires par defaut
    ''    For I = LaReponse.Recipients.Count To 1 Step -1
    ''    LaReponse.Recipients.Remove I
    ''    Next I
     
    '' c'est mieux de créer ton nouveau mail en dehors de la boucle
        Set LaReponse = Application.CreateItemFromTemplate ("C:\download\LaReponse.oft")
        'on Ajoute des destinataire "A" du mail d'origine
        For Each destinataire In msg.Recipients
        'MsgBox destinataire
        If destinataire.Type = olTo Then
        LaReponse.Recipients.Add destinataire.Address
        End If
     
        Next destinataire
    'affiche la réponse à commenter après test
        LaReponse.Display
    ' à decommenter pour envoyer
        LaReponse.Send
    Set msg = Nothing
    Set olNS = Nothing
    Set LaReponse = Nothing
    End Sub
     
    Sub test_script()
    Dim Oitem As Outlook.MailItem
    Set Oitem = ActiveInspector.CurrentItem
    RepToRec Oitem
    End Sub

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2008
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Super, tu es décidément un chef...

    Je viens de copier ton dernier code (j'ai juste enlevé le "LaReponse.Display" qui ne m'était d'aucune utilité dans mon cas).

    Mille fois merci et au plaisir de relire l'un de tes nombreux posts ingénieux.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. envoyer email automatiquement à plusieurs destinataires
    Par charly77 dans le forum VBA Outlook
    Réponses: 3
    Dernier message: 19/06/2009, 23h13
  2. [Mail] Réponse automatique par Email
    Par Myogtha dans le forum Langage
    Réponses: 4
    Dernier message: 02/12/2006, 00h16
  3. [Gmail] Réponse automatique
    Par Marco85 dans le forum Applications
    Réponses: 2
    Dernier message: 08/03/2006, 09h54
  4. [outlook 2003]réponse automatique accusé réception
    Par pinocchio dans le forum Outlook
    Réponses: 2
    Dernier message: 13/01/2006, 21h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo