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 :

Lancer une macro si un destinataire figure dans A


Sujet :

VBA Outlook

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Lancer une macro si un destinataire figure dans A
    Bonjour à tous,

    Pour Outlook 2013 je souhaite utiliser une macro(1) qui, lorsque je clique sur "Envoyer," détermine si un destinataire est présent dans la liste A, ceci afin de lancer une macro(2).
    Cette macro(2) va me permettre de rajouter automatiquement un autre destinataire dans CCi. Cette macro(2) fonctionne déjà.
    Merci d'avance de votre aide
    Pégase

  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 : 52
    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,

    Un truc comme cela

    DANS THISOutlookSession

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
        Dim DEST As Recipient
        Dim CibleMail
    If Not Item.Class = olMail Then exit sub
        CibleMail = "toto@toto.fr"
        For Each DEST In Item.Recipients
            If StrComp(GetSMTPAddressForRecipient(DEST), CibleMail, vbTextCompare) = 0 Then
                Call macro2(Item)
                Exit For
            End If
        Next DEST
    End Sub
    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
    17
    18
    19
    20
    21
    22
     
    Function GetSMTPAddressForRecipient(recip As Outlook.Recipient) As String
    '---------------------------------------------------------------------------------------
    ' Procedure : GetSMTPAddressForRecipient
    ' Author    : Oliv-
    ' Date      : 21/01/2015
    ' Purpose   : Obtenir l'adresse SMTP =xxx@xxx.xxx
    '---------------------------------------------------------------------------------------
    'Dim recip As Outlook.Recipient
    'pas de adresse SMTP si Contact d'origine EXCHANGE mais copié dans Pop
        GetSMTPAddressForRecipient = ""
        On Error GoTo fin
        Dim pa As Outlook.propertyAccessor
        Const PR_SMTP_ADDRESS As String = _
              "http://schemas.microsoft.com/mapi/proptag/0x39FE001E"
        Set pa = recip.propertyAccessor
        'Debug.Print recip.Name & " SMTP=" _
         & pa.GetProperty(PR_SMTP_ADDRESS)
        GetSMTPAddressForRecipient = pa.GetProperty(PR_SMTP_ADDRESS)
    fin:
        If GetSMTPAddressForRecipient = "" Then GetSMTPAddressForRecipient = recip
    End Function

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Merci Oliv de ta réponse hyper rapide.
    Ton code fonctionne parfaitement.

    J'ai juste un problème, non lié.
    Ma macro(2) est issue de celle que tu avais proposé sur ce forum il y a longtemps
    A savoir
    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
     
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
     
    'By Oliv' 29/06/2007 pour Outlook 2003
    Dim myRecipient As Outlook.Recipient
    If Not Item.Class = olMail Then GoTo fin
    Dim prompt As String
     
    ' ici renseigner le destinataire
    cci = "toto@tata.fr"
     
    'commentez au choix l'option non voulue
    '########################Option CCI############################
    prompt = "Ajouter le cci suivant : " & cci & "?"
    Dim reponse
    reponse = MsgBox(prompt, vbYesNoCancel + vbQuestion, "Copie cachée")
    If reponse = vbCancel Then
        Cancel = True
        Exit Sub
    ElseIf reponse = vbYes Then
        Set myRecipient = Item.Recipients.Add(cci)
        myRecipient.Type = olBCC
        myRecipient.Resolve
            If myRecipient.Resolved = False Then
            MsgBox "L'adresse Email n'est pas correcte !", vbCritical, "Erreur"
            Cancel = True
            End If
    End If
    fin:
    End Sub
    Je l'ai utilisé sur un autre PC (à la campagne donc pas accessible en ce moment), il me semble bien qu'elle fonctionnait correctement.
    Or aujourd'hui l'adresse toto@tata.fr est mise dans CC au lieu de CCI
    J'avoue ne pas comprendre.

    Si tu pouvais me faire part de tes lumières... un grand merci.
    Et merci encore pour la solution à ma question initiale
    Pégase

  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 : 52
    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
    Bjr,

    c'est la propriété myRecipient.Type = olBCC qui détermine CC (olCC )OU CCI (=olBCC )

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonsoir,

    c'est la propriété myRecipient.Type = olBCC qui détermine CC (olCC )OU CCI (=olBCC )
    Oui cela je l'avais compris, et c'est ce qui est codé en ligne 22 > myRecipient.Type = olBCC
    Mais à l’exécution l'adresse est placée dans A au lieu de CCi .
    Je ne comprends pas pourquoi.

    Merci et bonne fin de soirée
    Pégase

  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 : 52
    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,
    essaye de remplacer
    olBCC par 3

    Sur un nouveau Mail en manuel ss tu bien dans ton email le champ CCI qui est affiché ?

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Salut,

    J'ai remplacé olBCC par 3 le pb est le même
    En manuel le champ CCi est bien affiché

    J'ai suivi pas à pas le déroulement de la macro et je constate ceci
    Dans la partie de code suivante :
    Set myRecipient = Item.Recipients.Add(cci) C'est à la l’exécution de cette ligne que l'adresse se place dans A
    myRecipient.Type = olBCC Donc ce code arrive trop tard

    Je ne sais pas comment réparer cette anomalie.
    Merci pour tes idées
    Pégase

  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 : 52
    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,
    Non c'est bien comme cela ! il doit passer de A: à BCC

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set myRecipient = Item.Recipients.Add(cci)
        myRecipient.Type = olBCC
        myRecipient.Resolve
    Le code que tu as publié c'est bien celui que tu utilises ?

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Le code que tu as publié c'est bien celui que tu utilises ?
    Oui le code que j'ai mis le 20/09/2017 à 15h36 est bien le code que j'utilise.
    Comprends pas !

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonsoir,
    Je suis sur mon 2e PC à la campagne et la macro dont j'ai donné le code le le 20/09/2017 à 15h36 fonctionne correctement.
    Voici ce que je constate

    Set myRecipient = Item.Recipients.Add(cci) C'est à la l’exécution de cette ligne que l'adresse se place dans A
    myRecipient.Type = olBCC
    myRecipient.Resolve C'est à la l’exécution de cette ligne que l'adresse se déplace en CCi

    Tout cela me semble normal, mais je ne comprends pas pourquoi sur mon autre PC cela ne fonctionne pas.
    Quand je rentrerai je vais revérifier et te tiendrai au courant.

    Merci de ton aide
    Pégase

Discussions similaires

  1. [XL-2003] Lancer une macro si le curseur est dans la plage de cellules selectionnée
    Par dede tabby dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/01/2011, 12h42
  2. Lancer une macro dans une procedure vba
    Par pascalourox dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/08/2008, 16h39
  3. [Macro Access] pb dans mon code pour lancer une macro Access
    Par Commodore dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/06/2007, 11h51
  4. [VBA]lancer une macro à chaque changement de cellule dans une feuille
    Par freddddd dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 14h58
  5. Réponses: 9
    Dernier message: 25/01/2006, 16h35

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