Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Outlook > VBA Outlook

Réponse
 
Outils de la discussion
Vieux 11/04/2008, 18h57   #1 (permalink)
Invité de passage
 
Date d'inscription: avril 2008
Messages: 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 ;-)
nfranq est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/04/2008, 08h26   #2 (permalink)
Invité de passage
 
Date d'inscription: avril 2008
Messages: 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 !
nfranq est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/04/2008, 10h52   #3 (permalink)
Responsable Outlook
 
Avatar de Dolphy35
 
Date d'inscription: octobre 2004
Localisation: Rennes
Messages: 3 296
Envoyer un message via MSN à Dolphy35 Envoyer un message via Skype™ à Dolphy35
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
__________________
Initiation au VBA d'Outlook
venez défier mabrute
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/04/2008, 11h22   #4 (permalink)
Invité de passage
 
Date d'inscription: avril 2008
Messages: 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 :
 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.

Dernière modification par Dolphy35 ; 15/04/2008 à 00h09 Motif: Balises Code
nfranq est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/04/2008, 18h06   #5 (permalink)
Membre éprouvé
 
Avatar de Oliv-
 
Date d'inscription: mars 2006
Localisation: Tourcoing
Âge: 37
Messages: 492
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
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/04/2008, 20h19   #6 (permalink)
Invité de passage
 
Date d'inscription: avril 2008
Messages: 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,
nfranq est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/04/2008, 12h23   #7 (permalink)
Membre éprouvé
 
Avatar de Oliv-
 
Date d'inscription: mars 2006
Localisation: Tourcoing
Âge: 37
Messages: 492
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 :
sujet= msg.subject
expediteur = msg.SenderEmailAddress
les destinataires c'est une collection
Code :
 
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 :
Set LeMailTransfere = MSG.Forward
LeMailTransfere.Recipients.add "destinataire@fai.fr"
LeMailTransfere.Send
ok ?
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/04/2008, 18h07   #8 (permalink)
Invité de passage
 
Date d'inscription: avril 2008
Messages: 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 :
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,
nfranq est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/04/2008, 10h17   #9 (permalink)
Membre éprouvé
 
Avatar de Oliv-
 
Date d'inscription: mars 2006
Localisation: Tourcoing
Âge: 37
Messages: 492
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
Citation:
------------------------------------------------------------------
De : toto
Envoyé : lundi 17 mars 2008 11:43
À : Olivier
Cc : Laurent
Objet : PST
Voici ton code
Code :
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
 
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/04/2008, 17h36   #10 (permalink)
Invité de passage
 
Date d'inscription: avril 2008
Messages: 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 :
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 !!!

@+
nfranq est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/04/2008, 18h03   #11 (permalink)
Membre éprouvé
 
Avatar de Oliv-
 
Date d'inscription: mars 2006
Localisation: Tourcoing
Âge: 37
Messages: 492
Par défaut

C'est bien mais faut faire un peu de ménage.
Code :
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
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/04/2008, 21h13   #12 (permalink)
Invité de passage
 
Date d'inscription: avril 2008
Messages: 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.

nfranq est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Outlook > VBA Outlook

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide