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 :

VBA-outlook : envoi de mail après transfert dans brouillons


Sujet :

VBA Outlook

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut VBA-outlook : envoi de mail après transfert dans brouillons
    Hello,
    Je débute en VBA et mon souhait est de programmer en VBA pour Outlook une règle qui s'active automatiquement à chaque mail reçu.
    L'objectif est : quand je reçois un mail dans la boite de réception, je veux qu'il soit déplacé dans le dossier brouillon, que l'adresse de destination soit remplacée par celle que je rentre dans le code (ici j'ai mis monadresseemail@outlook.com pour info et cette adresse de destination doit toujours être la même) et ensuite que le mail soit envoyé.
    Le déplacement du mail vers brouillon est obligatoirement en macro (je sais qu'il existe une règle outlook mais je veux le faire en macro).
    Je souhaite que la macro s’exécute en permanence. Pas d'activation nécessaire, pas de chose à valider, etc. Je souhaite lancer la macro et basta, ça fait le job

    J'ai tenté l'écriture de ce code, qu'en pensez-vous ?


    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
     
    Private Sub Application_NewMail()
        Dim myOlApp As New Outlook.Application
        Dim myNamespace As Outlook.NameSpace
        Dim myInbox As Outlook.Folder
        Dim myDestFolder As Outlook.Folder
        Dim myItems As Outlook.Items
        Dim myItem As Object
        Set myNamespace = myOlApp.GetNamespace("MAPI")
        Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
        Set myItems = myInbox.Items
        Set myDestFolder = myInbox.Folders("Brouillons")
        Dim strName As String
     
        For Each myItem In myInbox.Items
     
            strName = myItem.EntryID
            myItem.Move myDestFolder
            Set myItem = myItems.GetNext
     
        Next myItem
     
     For Each myItem In myDestFolder
            myItem.To ="monadressesemail@outlook.com"
        Next myItem
        Set myDestFolder = Nothing
    End Sub
    Des chances que ça marche ?

    Merci !

  2. #2
    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,
    Non !

    Que veux tu faire transférer un Email à quelqu'un ? Pourquoi ne pas juste utiliser une règle ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je ne veux tout simplement pas utiliser de règle

    Ma demande est structurée ainsi :
    Je veux que, quel que soit le mail que je reçois,
    1 - il soit transféré dans le dossier brouillon
    2- le destinataire passe à celui identifié à un moment dans le code (je ne veux plus jamais y toucher)
    3- le message soit envoyé

    Et que cette macro soit appliquée tout le temps. Pas d'action de ma part, pas de clic, pas de confirmation, etc

    Merci !

  4. #4
    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
    Citation Envoyé par xantos295 Voir le message
    Je ne veux tout simplement pas utiliser de règle
    Pourquoi ?

    Citation Envoyé par xantos295 Voir le message
    Ma demande est structurée ainsi :
    Je veux que, quel que soit le mail que je reçois,
    1 - il soit transféré dans le dossier brouillon
    !
    Pourquoi passer par les brouillons ? Tu veux faire répondre ou Transférer ?


    Citation Envoyé par xantos295 Voir le message
    2- le destinataire passe à celui identifié à un moment dans le code (je ne veux plus jamais y toucher)
    3- le message soit envoyé
    Et que cette macro soit appliquée tout le temps. Pas d'action de ma part, pas de clic, pas de confirmation, etc

    Merci !
    Une macro ne fonctionne qu si Outlook et ton ordi sont ouverts, contrairement à une règle qui peut fonctionner tout le temps si c'est un compte Exchange.

    tu peux essayer avec cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
        Dim varEntryIDs
        Dim objItem
        Dim i As Integer
        varEntryIDs = Split(EntryIDCollection, ",")
        For i = 0 To UBound(varEntryIDs)
            Set objItem = Application.Session.GetItemFromID(varEntryIDs(i)).forward
    objItem .to="toto@titi.com"
    objItem.send
        Next
    End Sub

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je te remercie pour tes réponses !

    Je me suis sûrement mal exprimé.
    Pour moi l'utilisation de règle était bannie car elle ne s'appliquait qu'à certains messages et pas tous.
    Mais j'ai cherché, et il est possible d'appliquer un script sur tous les messages reçus.

    contrairement à une règle qui peut fonctionner tout le temps si c'est un compte Exchange.
    Si je suis ce que tu m'indiques, puis-je conclure qu'en mettant un script sur une règle, cela peut fonctionner tout le temps ?

    Pour tester ton code, pourrais tu m'indiquer quelle est la marche à suivre?
    En étant dans outlook 2013, avec le Alt+F11, j'arrive à l'éditeur. J'ai beau copier-coller ton code dans "thisOutlookSession" puis enregistrer, je n'arrive pas à retrouver ce code quand je créé la règle et que je dois sélectionner un script (la fenêtre de sélection de scipt s'affiche désespérément vide).
    Des idées ?

    Pour tenter d'être encore plus précis dans ma demande : je recherche un script exécutable dans une règle outlook 2013. Dès que je reçois un mail sur ma boite mail, il me transfère ce mail dans le dossier brouillon, lui assigne un expéditeur précis et envoie le mail.

    Merci !

  6. #6
    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
    Bonjour
    Tu n'es malheureusement pas plus précis 😂
    Tu ne fais que répéter la même chose sans répondre à toutes les questions !
    Le code que je t ai donné ne fonctionne pas avec les règles il utilise les événements.
    Si comme je le pense depuis le début tu veux juste transférer ton mail à quelqu'un tu fais une règle pour tous les messages reçus et comme action tu choisis dans les options avancées "le transférer à " ou " le faire suivre à "

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    ok. L'admin de ma boite qui gère les boites emails a bloqué les envois de mails par règle. Je suppose que c'est par raison de sécurité pour éviter de rediriger des mails vers des sociétés extérieures. Mon souhait est de rediriger des mails uniquement en interne (ce sont des mails de réservation de salles).
    J'ai émis l'idée d'utiliser les scripts et le vba outlook qui permettraient de passer outre ces règles. Le respo de ma boîte a validé l'idée mais n'a pas le temps de creuser. Je me suis proposé pour creuser pour cette solution (vive les stagiaires ! )

    Les points bloquants sont techniques je pense.
    Les règles de sécu bloquent la règle qui transfère le mail directement à sa réception. A la mano, aucun soucis. Du coup, avec le script, on pourrait "tromper" la sécurité et envoyer quand même les mails. Si cette "tromperie" n'est pas possible (ce que je suppose), j'avais pensé à :
    -1ere solution : un transfert de la boite de reception vers le dossier brouillon, puis changement de destinataire et enfin, envoi du mail.

    - 2eme solution : avec un règle simple, je peux transférer un mail de la boite de réception au dossier brouillons de manière automatique dès son arrivée.
    Penses tu qu'il est possible de coder quelque chose qui, sur l’événement "nouveau mail dans le dossier brouillon", transfère le mail vers une boite email prédestinée ?

    Merci et désolé pour pour mes questions pas claires !

  8. #8
    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
    Bonjour
    C'est beaucoup plus clair ! En principe on peut limiter le transfert automatique dans exchange au seul domaine interne. Avez vous interrogé l'admin ? De plus il semble que le interdiction de transférer vers un domaine extérieur soit un paramètre par défaut donc ce n'est peut être pas son souhait !
    Dans les actions possibles avec une règle il y a 2 type de transfert "faire suivre" et "transférer" peux tu essayer de créer une règle avec "transferer"

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2017
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    "Dans les actions possibles avec une règle il y a 2 type de transfert "faire suivre" et "transférer" peux tu essayer de créer une règle avec "transferer"
    J'ai beau essayé ces 2 actions, ça ne marche pas

    Pour le transfert à l'extérieur par défaut, il ne sait pas.

    Vraiment aucune possibilité de faire par script qui se déclenche par une règle à l'évenement "reception d'un mail" ?

    Merci !

  10. #10
    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
    Bonjour,

    Ca aurait été mieux de modifier ce paramétre de transfert , car je te rappelle qu'une règle avec un script ne fonctionne que si Outlook et ton ordi sont ouverts,

    tu peux utiliser ce script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub script_transfert(item As Outlook.MailItem)
        Dim NewMail As Outlook.MailItem
     
        Set NewMail = item.Forward
        NewMail.To = "toto@titi.com"
        NewMail.Send
     
    End Sub

    A voir
    https://social.technet.microsoft.com...ine?forum=1109
    https://social.technet.microsoft.com...rne?forum=1109

Discussions similaires

  1. [OL-2010] VBA OUTLOOK: imprimer un mail dès son envoi
    Par LANGAZOU dans le forum VBA Outlook
    Réponses: 8
    Dernier message: 23/10/2015, 10h27
  2. [XL-2007] VBA Excel - envoi de mail via Outlook
    Par Seg_B dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/10/2011, 12h08
  3. Réponses: 2
    Dernier message: 10/06/2008, 13h24
  4. [VBA-E] afficher des données apres saisie dans cellule
    Par user0505 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 14/04/2006, 14h04
  5. [VBA-A] Envoi de mail sans passer par Outlook ou autre.
    Par genius99 dans le forum VBA Access
    Réponses: 4
    Dernier message: 21/02/2006, 07h50

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