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 :

Impossible d'activer ma macro via une règle (macro introuvable) [OL-365]


Sujet :

VBA Outlook

  1. #1
    Expert confirmé Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    février 2010
    Messages
    1 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : février 2010
    Messages : 1 614
    Points : 4 282
    Points
    4 282
    Par défaut Impossible d'activer ma macro via une règle (macro introuvable)
    Bonjour,

    je débute dans les macros sous Outlook. J'ai bien modifier le registre pour pouvoir activer un script avec les règles, l'option est présente quand je veux modifier ou créer une règle.
    J'ai donc récupéré deux macros que j'ai mises dans ThisOutlookSession pour débuter, l'une ouvre un popup à l'envoi d'un mail pour modifier le sujet avant envoi et l'autre affiche une string de test.
    Ces deux macros fonctionnent, donc j'ai voulu créer ma première macro (ModificationSUJET) et l'intégrer dans une règle.
    L'objectif de ma macro est assez simple, quand je reçois un mail venant de X je rajoute "[YOLO]" au sujet du mail avant de le transférer à X.
    Sauf que je n'arrive pas à activer ma macro quand je créé une règle (elle n'est pas dans la liste).

    Je ne sais pas trop d'où ça vient, est-ce que vous pourriez m'aider ?

    Merci.

    Ci-dessous, le code complet du VbaProject.otm de ThisOutlookSession.

    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
     
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''’’’’’'''''''''''''''''''''’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’'
    'METTRE DES CODES DE DIFFUSION DANS L'OBJET D'UN MAIL
    'By Maeva Chelly www.maevadigitalactive.com / Oliv - 01 mars 2019
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’'''''''''''''''''''''''''
            If Not Item.Class = olMail Then Exit Sub
     
            If InStr(1, Item.Subject, "[") = 0 Then
     
            Choix = InputBox("Pour rajouter un code de diffusion, entrez le numéro correspondant puis valider, sinon cliquer sur la touche Annuler" & vbCr & vbCr & "1- ACTION REQUISE" & vbCr & "2- CONFIDENTIEL" & vbCr & "3- IMPORTANT" & vbCr & _
                             "4- LECTURE REQUISE" & vbCr & "5- PERSONNEL" & vbCr & "6- POUR INFORMATION" & vbCr & "7- RÉPONSE REQUISE" & vbCr & "8- URGENT", " Voulez-vous ajouter un code de diffusion ?")
            If Choix <> "" Then
     
            Item.Subject = Choose(Choix, "[ACTION REQUISE]", "[CONFIDENTIEL]", "[IMPORTANT]", "[LECTURE REQUISE]", "[PERSONNEL]", "[POUR INFORMATION]", "[RÉPONSE REQUISE]", "[URGENT]") & "-" & Item.Subject
            End If
     
        End If
    End Sub
     
    Sub ModificationSUJET(ByVal Item As Object)
        If Not Item.Class = olMail Then Exit Sub
     
        Item.Subject = "[YOLO]" & Item.Subject
     
    End Sub
     
    Sub Test()
    'Déclaration de la variable
    Dim strTest As String
        'Chargement de la variable
        strTest = "Bonjour ceci est un test"
        'Capture la valeur de la variable dans la fenêtre d'exécution
        Debug.Print strTest
    End Sub
    http://www.traducteur-sms.com/ On ne sait jamais quand il va servir, donc il faut toujours le garder sous la main

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 4 072
    Points : 7 018
    Points
    7 018
    Billets dans le blog
    20
    Par défaut
    Salut
    Tu dois lancer ta macro dans Application_ItemSend
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    call ModificationSUJET(item)

  3. #3
    Expert confirmé Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    février 2010
    Messages
    1 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : février 2010
    Messages : 1 614
    Points : 4 282
    Points
    4 282
    Par défaut
    Bonjour,

    merci pour la réponse, mais ça ne résout pas totalement mon problème.
    Si j'appelle ModificationSUJET dans Application_ItemSend ça rajoute [YOLO] à tous les mails que j'envoie mais je voudrais pouvoir filtrer et le faire uniquement sur les mails d'un expéditeur et d'un destinataire donné.
    Je pourrais mettre des if dans Application_ItemSend pour filtrer, est-ce que je ne peux pas passer par les règles pour plus de flexibilité ?

    A terme je voudrais pouvoir transférer automatiquement les mails de l'expéditeur A au destinataire B en rajoutant [YOLO] au sujet, les mails de C à D en rajoutant [TOTO], etc... ce qui va impliquer de créer et d'appeler des macros différentes selon l'expéditeur et le destinataire.

    Je pensais que la méthode la plus simple serait de passer par les règles Outlook en combinant à un script, est-ce que c'est le cas ou est-ce que je dois passer par autre chose ?
    http://www.traducteur-sms.com/ On ne sait jamais quand il va servir, donc il faut toujours le garder sous la main

  4. #4
    Expert confirmé Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    février 2010
    Messages
    1 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : février 2010
    Messages : 1 614
    Points : 4 282
    Points
    4 282
    Par défaut
    Rebonjour,

    j'ai pu avancer un peu mais il me reste un pépin pour envoyer le mail.
    Voilà ce à quoi ressemble ma règle :
    Nom : image_2021-01-11_144127.png
Affichages : 10
Taille : 7,2 Ko
    Et voilà ma macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Public Sub Modification_SUJET(ByVal Item As Outlook.MailItem)
        Item.Subject = "[TOTO]" & Item.Subject
        Item.Recipients.Add "Z@gmail.com"
        Item.Send
     
    End Sub
    Donc quand le mail arrive il est bien rangé dans le dossier "DossierToto".
    En parallèle j'ai bien une modification du sujet avec une tentative d'envoi, qui se termine en échec avec l'erreur suivante :

    Certains des destinataires ou tous les destinataires n'ont pas reçu votre message.

    Objet : [TOTO]mail de test
    Date : 11/01/2021 14:39

    Impossible de contacter le(s) destinataire(s) suivant(s) :

    Y@outlook.fr le 11/01/2021 14:39
    'Z@gmail.com' le 11/01/2021 14:39
    Nous n’avons pas pu envoyer ce message. Vous n'avez pas l'autorisation d'envoyer le message sous le nom de l'utilisateur spécifié.
    Je ne comprend pas trop si je ne peux pas envoyer le mail avec mon adresse outlook via une macro ou si il veut l'envoyer avec l'adresse gmail comme Expéditeur.

    En tout cas je peux envoyer un mail manuellement.
    http://www.traducteur-sms.com/ On ne sait jamais quand il va servir, donc il faut toujours le garder sous la main

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

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : mars 2006
    Messages : 4 072
    Points : 7 018
    Points
    7 018
    Billets dans le blog
    20
    Par défaut
    BOnsoir,
    Je pense pas que cela marchera avec les règles, c'est pas fait pour fonctionner lors de l'envoi.

    Il faut mettre les tests dans ta macro

  6. #6
    Expert confirmé Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    février 2010
    Messages
    1 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : février 2010
    Messages : 1 614
    Points : 4 282
    Points
    4 282
    Par défaut
    Ca y est, j'ai ce que je veux !
    Je n'ai pas touché à la règle, elle range automatiquement les mails de l'expéditeur X dans le dossier Z.
    Le script lui créé un objet mail, je le rempli comme je veux (en reprenant ou pas des éléments du mail reçu) et je l'envoie à qui je veux.

    Ma prochaine étape ça sera de factoriser tout ça pour passer en paramètre ce que je rajoute au sujet ainsi que le destinataire.


    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
    Public Sub Modification_SUJET(ByVal Item As Outlook.MailItem)
        Item.Subject = "[TOTO]" & Item.Subject
        'Item.Display
     
        Dim oMailItem As Outlook.MailItem
        Set oMailItem = CreateItem(olMailItem)
        With oMailItem
        .To = "Y@gmail.com"
        .Subject = Item.Subject
        .Body = "La pièce jointe est trop choupi"
        .Display
        .Send
        End With
     
        Set oMailItem = Nothing
        'Item.Send
     
    End Sub
    http://www.traducteur-sms.com/ On ne sait jamais quand il va servir, donc il faut toujours le garder sous la main

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 30/05/2011, 11h42
  2. [XL-2007] Impossible d'activer les macros sous 2007
    Par thugelife dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/09/2010, 12h40
  3. Excel 2007 Impossible d'activer les Macros
    Par oohcalme dans le forum Excel
    Réponses: 9
    Dernier message: 19/08/2009, 09h48
  4. Impossible d'ajouter des enregistrements via une requête
    Par roman33 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 05/06/2009, 22h20
  5. Réponses: 7
    Dernier message: 20/03/2005, 15h53

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