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 :

Macro Outlook au moment de l'envoi


Sujet :

VBA Outlook

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut Macro Outlook au moment de l'envoi
    Bonjour à tous,

    j'essaye d'ajouter une macro à Outlook pour qui s'active au moment de l'envoi, j'ai trouvé sur le web un script qui ressemble à peu près à ce que je veux faire, mais avant de le modifier j'aimerais déjà réussir à comprendre comment le faire fonctionner ..

    le script en question :
    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
     
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) 
       Dim monMail As MailItem 'élément Message 
       Dim monRecip As Recipient 'élément Destinataire 
     
       If TypeName(Item) = "MailItem" Then 'le traitement ne se fait que si l'élément envoyé est de type Message 
          Set monMail = Item 
          For Each monRecip In monMail.Recipients ' traitement pour chaque destinataire 
             If LCase(monRecip.Address) = "adresse@monennemi.com" Then 'comparaison avec chaque adresse de destinataire en minuscule 
                MsgBox "Attention, message envoyé à l'ennemi !" 'par exemple, ou "au patron" ;) 
                Cancel = True 'annulation de l'envoi 
                Exit For 'arrêt de la boucle 
             End If 
          Next 
       End If 
    End Sub
    J'ai pris ce script, j'ai ouvert l’éditeur dans Outlook, j'ai créé un nouveau module, coller ça dedans, et ça ne donne rien, alors j'ai du sauter une étape.
    L'idée final est de montrer à chaque fois que j'envoi un mail, cela m'affiche une msgBox en me rappelant les destinataires.

    Vous remerciant de votre aide précieuse !
    précision : je suis sur du 2013, mais cela doit aussi fonctionner sur du 2010 (si possible )

  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,

    il faut mettre ce code dans thisOutlookSession.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Salut Oliv,

    merci, effectivement j'ai déjà quelque chose qui apparaît .
    J'aimerai maintenant checker les noms de domaines au lieu de checker une adresse comme c'est le cas dans ce script et les afficher après à l'utilisateur, aussi je pensais faire quelques chose de ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    var tab = []
     
    for(int i=0; i<monRecip.Address.length; i++){ //je boucle sur le nombre de caractère qu'il y a dans l'adresse
        if(monRecip.Address[i] == '@'){ // je récupère l'index précédent le nom de domaine
     
          if(monRecip.Address.Substring((i +1)) != "monadresse.fr"){ //je récupère que la fin de la chaîne qui correspond au domaine et je le compare avec un domaine précis
             tab[i] = monRecip.Address
          }
       }
    }
     
    if(tab.length > 0){ // si il y a au moins une adresse dans le tableau
        // Affiche les adresses à l'utilisateur (MsgBox ou autre)
    }
    Bon il y a peut être plus simple, voici donc mes 2 questions, il y a t'il pas un super monRecip.Address.Domain (ça serait merveilleux ! mais pour l'instant pas trouver dans la doc)
    Et comment écrire ça en VB j'essaye mais chaque fois que je change de ligne cela me fait une erreur

    Voila Merci d'avance

  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
    Tu dois programmer en VBA pas en javascript !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Salut Oliv,

    merci pour ta réponse rapide.
    Je sais, mais c'etait pour montrer ce que je voulais faire. C'est pour cela que j'ai marqué, comment créer l’équivalent en VB, langage que je ne connais pas.
    Je suis entrain d'essayer de l'écrire, mais je trouve la syntaxe très spécial, la je suis sur la doc des boucle for en VB

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Re Bonjour,

    mon script est presque bon, Mais ile ne marche pas avec les adresses dont les contactes sont déja enregistré car il ne sont pas sous la forme xx@xx.xx mais sous la forme Nom Prenom, il y a t'il un moyen de contourner ça ?

    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
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
       Dim monMail As MailItem                              'Message
       Dim monRecip As Recipient                            'Destinataire
       Dim index As Integer
       Dim sAdresse, sDomaine, sMessage As String
       Dim sTableau() As String
    
       If TypeName(Item) = "MailItem" Then                  'Que si l'action est de type message
          Set monMail = Item
          sMessage = "Attention, vous allez envoyer votre message à des personnes extérieur à la société, soyez vigilant !" & vbLf & vbLf
          
          For Each monRecip In monMail.Recipients           'Pour chaque destinataire
            sAdresse = LCase(CStr(monRecip.Address))        'Convertit adresse en string et la met en minuscule
            index = InStr(sAdresse, "@")                    'Recupère l'index ou est placer le @
            sDomaine = Mid(sAdresse, index)                 'Récupère tout à partir du @ (on recupère donc le domaine)
            
            If sDomaine <> "@gmail.com" Then              'On ajoute au tableau que si l'adresse ne correspond pas à notre domaine
               sMessage = sMessage & sAdresse & vbLf        'On créer le message
            End If
          Next
          
          If MsgBox(sMessage, vbYesNo, "Attention") = vbNo Then  'On envoi le message et on attend le retour utilisateur
             Cancel = True                                       'Dans le cas ou l'utilisateur annulle
          End If
       End If
    End Sub
    Merci d'avance

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2012
    Messages : 28
    Points : 18
    Points
    18
    Par défaut
    Bon pour ceux que cela intéresse, voici mon script pour les envoi depuis Outlook qui alerte en fonction du domaine

    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
     
    Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
       Dim monMail As MailItem                                                                  'Message
       Dim monRecip As Recipient                                                                'Destinataire
       Dim index As Integer
       Dim bool As Boolean
       Dim sAdresse, sDomaine, sMessage As String
       Dim sTableau() As String
       Const PR_SMTP_ADDRESS As String = "http://schemas.microsoft.com/mapi/proptag/0x39FE001E" 'Mappe l'addresse SMTP du destinataire
     
       If TypeName(Item) = "MailItem" Then                                                      'Que si l'action est de type message
          Set monMail = Item
          sMessage = "Attention, vous allez envoyer votre message à des personnes extérieur à la société, soyez vigilant !" & vbLf & vbLf
          bool = False
     
          For Each monRecip In monMail.Recipients                                                'Pour chaque destinataire
            sAdresse = LCase(CStr(monRecip.PropertyAccessor.GetProperty(PR_SMTP_ADDRESS)))       'Convertit adresse en string et la met en minuscule
            index = InStr(sAdresse, "@")                                                         'Recupère l'index ou est placer le @
            sDomaine = Mid(sAdresse, index)                                                      'Récupère tout à partir du @ (on recupère donc le domaine)
     
            If sDomaine <> "@gmail.com" Then                                                   'On ajoute au tableau que si l'adresse ne correspond pas à notre domaine
               sMessage = sMessage & sAdresse & vbLf                                             'On créer le message
               bool = True
            End If
          Next
     
          If bool = True Then
            If MsgBox(sMessage, vbYesNo, "Attention") = vbNo Then                                'On envoi le message et on attend le retour utilisateur
                Cancel = True                                                                    'Dans le cas ou l'utilisateur annulle
            End If
          End If
       End If
    End Sub

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

Discussions similaires

  1. sauvegarde email macro outlook
    Par alexity dans le forum VBA Outlook
    Réponses: 2
    Dernier message: 22/03/2023, 20h48
  2. Macro Outlook 2003 exécution auto des règles de messagerie
    Par meumeu73.1 dans le forum VBA Outlook
    Réponses: 15
    Dernier message: 18/03/2008, 15h45
  3. Macro Outlook vs Dossiers Publique
    Par nabmed dans le forum VBA Outlook
    Réponses: 6
    Dernier message: 13/08/2007, 07h55
  4. Importer macro Outlook
    Par wanou44 dans le forum VBScript
    Réponses: 1
    Dernier message: 13/02/2007, 11h44
  5. envoyer un message par outlook dès qu'on en envoie reçoit un
    Par bertrand_declerck dans le forum Outlook
    Réponses: 6
    Dernier message: 19/08/2005, 11h59

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