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 de changer le Body d'un e-mail


Sujet :

VBA Outlook

  1. #1
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 280
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 280
    Points : 11 736
    Points
    11 736
    Par défaut Impossible de changer le Body d'un e-mail
    Bonjour,

    J'ai fait une macro qui, sous certaines conditions, modifie l'e-mail en cours de rédaction : changement de destinataire, changement de signature et diverses modification sur le Body. Cette macro est appelée manuellement par un bouton ajouté sur la barre d'outils Nouveau Courrier, et tout fonctionne bien.

    J'essaie maintenant de faire un déclenchement automatique à chaque fois qu'on répond à un e-mail remplissant certaines conditions. Je me suis inspiré de cette discussion et le déclenchement se passe bien, ainsi que le changement de destinataire. Par contre, toutes les modifications que ma macro fait sur le Body sont ignorées, sans pour autant déclencher d'erreur. Je constate également que tout se passe en invisible, et que toute tentative de mettre un Display dans l'une ou l'autre macro déclenche une erreur d'exécution.

    J'ai l'impression que, d'une manière ou d'une autre, l'événement se déclenche trop tôt... Quelqu'un connaît-il une parade à ce problème ?

    Voici la partie pertinente de ma macro, telle qu'elle fonctionnait en manuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ReponseManga()
    Dim M As MailItem
    Set M = Application.ActiveInspector.CurrentItem
    M.To = "nouveau destinataire"
    M.Recipients.ResolveAll
    M.Body = Replace(M.Body, "phrase à supprimer", "")
    End Sub
    Pour implémenter le déclenchement événementiel, j'ai mis ça dans 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
    Dim WithEvents objInspectors As Outlook.Inspectors
    Dim WithEvents objMailItem As Outlook.MailItem
     
    Private Sub Application_Startup()
        Initialize_Handler
    End Sub
     
    Sub Initialize_Handler()
        Set objInspectors = Application.Inspectors
    End Sub
     
    Private Sub objInspectors_NewInspector(ByVal Inspector As Inspector)
        If Inspector.CurrentItem.Class = olMail Then
            Set objMailItem = Inspector.CurrentItem
            If objMailItem.Sent = False Then
                If objMailItem.To Like "*critère*" Then               
                    ReponseManga objMailItem
                End If
            End If
        End If
    End Sub
    Et j'ai modifié le début de ma macro ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub ReponseManga(Optional M As MailItem)
    If M Is Nothing Then
        ' appel depuis la barre d'outils
        Set M = Application.ActiveInspector.CurrentItem
    End If
    'idem pour la suite
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  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
    BOnjour,

    l'événement objInspectors_NewInspector, ne se déclenche pas toujours notamment quand tu fait une réponse inline.

    et aussi quand tu réponds de nouveau au même Email, il considère pas cela comme un nouvel inspector.

    Tu devrais utiliser Application_ItemSend

    ça fera les changement quand tu cliques sur envoyer , mais du coup tu ne vois pas les modif seleument dans les élément envoyés après.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    '---------------------------------------------------------------------------------------
    ' Procedure : Application_ItemSend
    ' Author    : OCTU
    '---------------------------------------------------------------------------------------
    '
        If Not Item.Class = olMail Then GoTo Fin
     
     
    call  ReponseManga(item)
     
     
    fin:
    end sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub ReponseManga(M As MailItem)
     
    M.to = "nouveau destinataire"
    M.Recipients.ResolveAll
    M.Body = Replace(M.Body, "phrase à supprimer", "")
    End Sub

    Bien que ta méthode fonctionne, en principe pour ajouter un destinataire on fait comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      'Ajout d'un destinataire principal
        Set dest = M.Recipients.Add("toto@toto.com")
        dest.Type = olTo    'olBCC, olCC, olOriginator ou olTo.
        dest.Resolve
     
        'Ajout d'un destinataire en copie
        Set dest = M.Recipients.Add("titi@toto.com")
        dest.Type = olCC    'olBCC, olCC, olOriginator ou olTo.
        dest.Resolve

Discussions similaires

  1. Impossible de changer les attributs d'un dossier
    Par NeHuS dans le forum Autres Logiciels
    Réponses: 20
    Dernier message: 03/03/2006, 09h38
  2. Impossible de changer le fond d'un onglet
    Par karidrou dans le forum Access
    Réponses: 7
    Dernier message: 02/03/2006, 11h22
  3. [MFC]Impossible de changer le texte d'un LABEL
    Par jlassira dans le forum MFC
    Réponses: 7
    Dernier message: 01/03/2006, 16h39
  4. Impossible de changer Visible dans OnHide ou OnShow
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 10
    Dernier message: 21/06/2005, 13h24
  5. impossible de changer la valeur d'un hidden...
    Par Palmic dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 31/05/2005, 12h06

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