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 :

Evénement à l'impression d'un mail (ou propriété "Printed" ?)


Sujet :

VBA Outlook

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Points : 412
    Points
    412
    Par défaut Evénement à l'impression d'un mail (ou propriété "Printed" ?)
    Bonjour à tous,

    Je souhaite réaliser une macro permettant d'organiser automatiquement des e-mails reçus sur Outlook, mais cette organisation ne soit se faire que si le mail a déjà été imprimé. J'ai pensé à avoir un fichier Excel (ou csv ou peu importe) qui liste tous les ID des e-mais qui ont été imprimés et la macro utiliserait ce tableau pour savoir qui a été imprimé etc.

    Seulement, pour que cette liste s'incrémente, il faut qu'à chaque nouvelle impression de mail, la macro rajoute le nouvel ID, c'est là qu'il me manque un événement.

    J'ai donc regardé dans les différents événements de l'application Outlook et des MailItem mais je n'ai rien trouvé du genre "BeforePrint" ou autre... Et d'après mes recherches sur le net, il n'existe pas vraiment d'événement du genre.

    Sauriez-vous comment je peux faire ? Sinon, existerait-il une propriété des mails qui spécifie s'ils ont déjà été imprimés ? Je n'en ai pas trouvé

    Merci d'avance pour votre aide !

  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,
    J'ai vérifié, mais il n'y a pas d'événement before print ou print , pas non plus de propriété indiquant que la mail a été imprimé.

    Le plus simple c'est de créer une règle à la réception des Emails qui va les imprimer puis les classer

    Tu pourrais peut être remplacer les commandes imprimer du ruban et du menu backstage(repurpose), ainsi que le ctrl+P (Keyboard Hook) , mais c'est pas simple et encore plus directement en vba.

    -->http://www.howtobuildsoftware.com/in...-outlook-2010-

    j'ai mis entre parenthèse les mots clefs pour googler

  3. #3
    Membre averti
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Points : 412
    Points
    412
    Par défaut
    Merci pour ces infos !

    En fait, je ne passe pas par une règle, car la suite des événements (dans quel dossier trier, créer le dossier s'il n'existe pas...) est assez sophistiquée et je l'ai déjà en grande partie rédigée.
    En plus, la macro n'imprime que la première page des e-mails et donc ne peut pas être fait par règle.

    D'ailleurs, si jamais ça intéresse quelqu'un, j'ai bidouillé une macro qui permet d'imprimer uniquement la première page (sans passer par du SendKeys vraiment pas génial)

    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
    Public Sub ImprimerPremièrePage(Mail As MailItem, Optional WordApp As Word.Application = Nothing)
     
    Dim WordLocal As Boolean 'Indicateur que l'instance de word est dédié à cet e-mail
    Dim WordDoc As Word.Document
     
    If WordApp Is Nothing Then 'en effet, WordApp est fourni dans le cas d'une boucle sur plusieurs e-mails pour éviter d'ouvrir et fermer des instances de word
        WordLocal = True
        Set WordApp = New Word.Application
    End If
     
    Chemin = "C:\Poubelle\MailTemp.htm"
    Mail.SaveAs Chemin, olHTML 'on enregistre temporairement le mail en HTML
    Set WordDoc = WordApp.Documents.Open(Chemin) 'on ouvre ce mail
    WordDoc.PrintOut Range:=WdPrintOutRange.wdPrintFromTo, From:="1", To:="1" 'on imprime la 1ère page
    WordDoc.Close SaveChanges:=False 'on referme le document word sans le sauvegarder
     
    If WordLocal Then WordApp.Quit: Set WordApp = Nothing 'Si l'indicateur est vrai, alors on ferme l'application de word
     
    Kill Chemin 'on supprime le fichier temporaire
     
    End Sub
    PS : j'ai volontairement pas utilisé WordApp déclarée en Static car je ne veux pas qu'un word soit ouvert en arrière plan tout le temps... En cas de bug du programme ça resterait ouvert indéfiniment...

  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
    Bonsoir
    Il faut associer la règle à un script qui pourra faire tout cela.

    C est effectivement en utilisant Word que l on peut imprimer au mieux les e mails.

    Tu auras de meilleurs résultats je pense en changeant le paramètre
    Mail.SaveAs Chemin, olHTML

    par

    Mail.SaveAs Chemin, OlSaveAsType.olDoc

    Il peut être aussi nécessaire avant de changer le format du mail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     If Mail.BodyFormat <> olFormatHTML Then
         Mail.BodyFormat = olFormatHTML
        End If

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut probleme
    bonjour
    quand je copie ton code et que je veux lancer la macro cela ne me la trouve pas dans ma liste de macro

  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
    De quelle code parles tu ?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut probleme
    le code de quentin ?

    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
    Public Sub ImprimerPremièrePage(Mail As MailItem, Optional WordApp As Word.Application = Nothing)
     
    Dim WordLocal As Boolean 'Indicateur que l'instance de word est dédié à cet e-mail
    Dim WordDoc As Word.Document
     
    If WordApp Is Nothing Then 'en effet, WordApp est fourni dans le cas d'une boucle sur plusieurs e-mails pour éviter d'ouvrir et fermer des instances de word
        WordLocal = True
        Set WordApp = New Word.Application
    End If
     
    Chemin = "C:\Poubelle\MailTemp.htm"
    Mail.SaveAs Chemin, OlSaveAsType.olDoc 'on enregistre temporairement le mail en HTML
    Set WordDoc = WordApp.Documents.Open(Chemin) 'on ouvre ce mail
    WordDoc.PrintOut Range:=WdPrintOutRange.wdPrintFromTo, From:="1", To:="1" 'on imprime la 1ère page
    WordDoc.Close SaveChanges:=False 'on referme le document word sans le sauvegarder
     
    If WordLocal Then WordApp.Quit: Set WordApp = Nothing 'Si l'indicateur est vrai, alors on ferme l'application de word
     
    Kill Chemin 'on supprime le fichier temporaire
     
    End Sub

  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
    Cette macro n'apparait pas car elle comporte des arguments

    il faut une macro pour la lancer comme

    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 Test_SavAs_mail_as_msg()
        Dim obj As Object
        Set obj = Application.ActiveWindow
        If TypeOf obj Is Outlook.Inspector Then
            Set obj = obj.CurrentItem
        Else
            Set obj = obj.Selection(1)
        End If
     
        If obj.Class <> olMail Then Exit Sub
     
        Dim oMail As Outlook.MailItem
        Set oMail = obj
        Call ImprimerPremièrePage(oMail)
     
    End Sub

Discussions similaires

  1. [OL-2007] impression d'un mail en pdf avec mise en page
    Par jehnkira dans le forum VBA Outlook
    Réponses: 1
    Dernier message: 11/12/2012, 11h16
  2. [MOSS 2007]Recherche avancée : proprité avec un quote
    Par royto dans le forum SharePoint
    Réponses: 6
    Dernier message: 14/09/2007, 14h43
  3. Evénement sur Impression d'un état
    Par chat84 dans le forum Access
    Réponses: 5
    Dernier message: 01/06/2006, 16h37

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