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 :

[VBA Outlook] Comment créer une demande de réunion à l'expéditeur d'un mail


Sujet :

VBA Outlook

  1. #1
    Membre du Club Avatar de Dailyplanet
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 40
    Points
    40
    Par défaut [VBA Outlook] Comment créer une demande de réunion à l'expéditeur d'un mail
    Bonjour,
    Quand je sélectionne un mail reçu, j'aimerai faire une macro pour "créer une demande de réunion" à l'expéditeur de ce mail.
    Avez-vous une idée ?
    Merci de votre aide.

  2. #2
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 221
    Points
    11 221
    Par défaut
    Bonjour et bienvenue sur le Forum Outlook

    bien sur que c'est possible et que l'on a plein d'idées

    par contre de ton côté tu en es où ? début de macro, version d'application (des méthodes pour faciliter ceci sont intégrés dans OL2007).


    Dolphy

  3. #3
    Membre du Club Avatar de Dailyplanet
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Bonjour,

    Je débute en VBA mais j'ai quelques notions de base en macro Excel.

    Professionnellement je tourne sous Outlook 2003 et c'est sous 2003 que je devrai faire cette macro.
    A la maison je suis sous 2007 et cela m'intéresserai aussi beaucoup de pouvoir le faire.

    Merci de votre accueil.

    Dailyplanet

  4. #4
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 221
    Points
    11 221
    Par défaut
    Salut,


    ça tombe bien aujourd'hui, c'est la sortie d'un nouveau tuto sur l'initiation au VBA d'Outlook http://dolphy35.developpez.com/article/outlook/vba/


    pour 2007 tu peux t'inspirer de ce code http://dolphy35.developpez.com/artic...ok/vba/#LV-A-5


    pour 2003 c'est plus complexe

    Impreigne toi du tuto et reviens nous donner ton avancement on pourra t'aider.


    Dolphy

  5. #5
    Membre du Club Avatar de Dailyplanet
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Merci, je vais y bosser ce week-end.

    Par contre les 2 liens pointent sur le tuto Initiation VBA Outlook...

    As-tu le lien pour le code Outlook 2007 ?

    Dailyplanet

  6. #6
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 221
    Points
    11 221
    Par défaut
    re,

    pour 2007 c'est le second, il faut utiliser l'événement ItemContextMenuDisplay de l'objet Application du module de classe ThisOutlookSession.

    il te permet de créer un contrôle dans le menu contextuel (clic droit) sur un message ensuite tu utilise l'objetAppointmentItem http://dolphy35.developpez.com/artic...ook/vba/#LVI-C


    Dolphy

  7. #7
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 221
    Points
    11 221
    Par défaut
    re,

    je viens de m'apercevoir qu'il te manque un truc dans le tuto (il faut que je le rajoute)

    Attention seulement sous Outlook 2007

    colle cette macro dans le module de classe ThisOutlookSession :
    ceci va créer lors du clic de droit un contrôle appelé Demande de réunion
    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
    Private Sub Application_ItemContextMenuDisplay( _
            ByVal CommandBar As Office.CommandBar, _
            ByVal Selection As Selection)
     
        Dim objButton As CommandBarButton
        Dim intButtonIndex As Integer
        Dim intCounter As Integer
     
        'Test si 1 seul mail est sélectionné
        If Selection.Count = 1 Then
            'Test si la sélection correspond à un E-mail
            If Selection.Item(1).Class = olMail Then
                Set objButton = CommandBar.Controls.Add( _
                                msoControlButton, , , , True)
                With objButton
                    .Style = msoButtonIconAndCaption
                    .Caption = "Demande de réunion"
                    .FaceId = 463
                    .OnAction = "Projet 1.ThisOutlookSession.CreationReunion"
                End With
            End If
        End If
     
    End Sub
    ensuite colle cette macro :
    elle permet de créer la réunion.
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    Sub CreationReunion()
    '---------------------------------------------------------------------------------------
    ' Procédure : CreationReunion
    ' Auteur    : Dolphy35 - http://dolphy35.developpez.com/
    ' Date      : 16/05/2008
    ' Détail    : Création d'une nouvelle entrée du calendrier
    '---------------------------------------------------------------------------------------
    '
    'Déclaration des objets
     
        Dim objOutlook As Outlook.Application
        Dim objReunion As Outlook.AppointmentItem
        Dim objExplorer As Outlook.Explorer
        Dim objSelection As Outlook.Selection
        Dim objMail As Object
        Dim strMail As String
        Dim strSujet As String
     
        'Instance des Objets
        Set objOutlook = Outlook.Application    'Instance de l'application
        Set objExplorer = objOutlook.ActiveExplorer
        Set objSelection = objExplorer.Selection
        Set objReunion = objOutlook.CreateItem(olAppointmentItem)  'Instance de la nouvelle entrée du calendrier
     
        'Récupère les infos du mail reçu
        For Each objMail In objSelection
            With objMail
                strMail = .SenderEmailAddress
                strSujet = .Subject
            End With
        Next
     
        'définition de la réunion
        With objReunion
            .MeetingStatus = olMeeting
            .Subject = strSujet
            .Location = "Mon Bureau"
            .Recipients.Add (strMail)
            .Display
        End With
     
        'Vide des instances
        Set objOutlook = Nothing
        Set objReunion = Nothing
        Set objExplorer = Nothing
        Set objSelection = Nothing
     
    End Sub
    Pour 2003 tu peux appelé la macro depuis Outils -> Macro -> Macro ou ALT+F8
    pour le mettre dans le menu contextuel celà doit être possible mais je n'ai pas le temps de me pencher sur le PB. A moins que quelqu'un est un code tout fait

    Dolphy

  8. #8
    Membre du Club Avatar de Dailyplanet
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Alors là Dolphy35 chapeau

    Le menu contextuel "Demande de réunion" est bien là,
    La macro fonctionne parfaitement bien en faisant Outils, Macro, Exécuté.

    Par contre rien ne se passe quand je clique sur le menu contextuel "Demande de réunion".

    Ne devrais-je pas associer le menu contextuel et la macro.

    Si oui, comment fait-on ?

    Dailyplanet

  9. #9
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 221
    Points
    11 221
    Par défaut
    re,

    pour assigner une action au contrôle c'est cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .OnAction = "Projet 1.ThisOutlookSession.CreationReunion"
    contrôle bien que ton projet s'appel Projet 1. Sinon change le nom

    Menu Affichage Explorateur de projet ou Ctrl+R en haut tu as le nom de ton projet ex: Projet 1 (VBAProject.OTM)

    selon la syntaxe la macro doit être placée dans le module ThisOutlookSession

    Dolphy

  10. #10
    Membre du Club Avatar de Dailyplanet
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Merci Dolphi35 grâce à toi mon problème est "presque" réglé.

    Juste encore un petit truc,

    Un pop-up "Avis de sécurité Microsoft Office Outlook" concernant "ThisOutlookSession" s'affiche à chaque démarrage de Outlook me demandant si je veux:

    - Approuver tous les documents de cette éditeur
    - Activer les macros
    - Désactiver les macros

    En "bon élève" j'ai parcouru les excellents tuto's pour savoir quelle option choisir sans mettre en péril la sécurité de mon ordi. J'ai pas trouvé la réponse.

    Quel est ton avis. Puis-je accepter "Approuver tous les documents de cet éditeur" ?

    Ca c'est pour Outlook 2007, après je tente tout seul pour 2003 !

    Dailyplanet

  11. #11
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 221
    Points
    11 221
    Par défaut
    Salut,

    L'idéal est un signature numérique ce qui garantit l'authenticité des macros par son éditeur. Ensuite Outlook est différent d'Excel par exemple, il n'est pas possible d'intégrer une macro dans un mail. Les macros dans Excel sont intégrés dans le fichier ce qui n'est pas le cas dans Outlook. Donc le seul moyen d'avoir une macro malveillante serait d'exécuter un fichier joint au mail. Perso je ne fais aucun contrôle comme ça plus de message

    A toi de voire


    Dolphy

  12. #12
    Membre du Club Avatar de Dailyplanet
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Tout fonctionne parfaitement pour Outlook 2007 et je t'en remercie.

    Maintenant j'ai copié le code dans VBA Outlook 2003.
    La macro fonctionne bien mais en faisant clic droit sur le mail je n'ai pas le bouton "Demande de réunion".

    Est-ce compliqué ? As-tu une idée ?

    Dailyplanet

  13. #13
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 221
    Points
    11 221
    Par défaut
    Salut,

    C'est normale le premier code ne focntionne que sous 2007, je l'ai mis en gras et rouge pourtant

    pour 2003 tu peux y accèder par le menu outils -> macro etc...

    je n'ai rien sous le coude en code, mais je pourrais essayer de trouver une astuce, cela pourrait intérresser d'autre personnes.

    je vais voir ce que je peux faire la semaine prochaine



    Dolphy

  14. #14
    Membre du Club Avatar de Dailyplanet
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Salut,

    Ce matin, au bureau, j'ai collé le code dans mon Outlook 2003.

    J'ai juste un petit problème
    Aux mails que j'ai envoyé je reçois le message d'erreur suivant lors de l'exécution de la macro:

    Microsoft Visual Basic
    Les zones A, Cc, ou Cci doivent contenir au moins un nom ou une liste de distribution

    Y-a-t-il moyen de corriger cela ?


    De plus, dans ma demande de réunion créé par la macro, j'aimerai ajouter un texte standard.

    A quel endroit du code dois-je ajouter ce texte.

    Merci beaucoup pour le soutien
    Dailyplanet

  15. #15
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 221
    Points
    11 221
    Par défaut
    Salut,

    Ce message survient car tu n'a pas de mail sélectionné dans ta boîte de réception

    Sinon pour ajouter du texte il faut utiliser la méthode Body, dans le with objReunion ajoute cette ligne :
    pour ce qui est de 2003, je n'ai pas de code permettant d'ajouter un contrôle dans le menu contextuel comme sous 2007 mais voici un bout de code qui permet d'ajouter un bouton dans le menu d'Outlook permettant la même chose

    Code à mettre dans le module de classe 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
    Private Sub Application_Startup()
    '---------------------------------------------------------------------------------------
    ' Procédure : Application_Startup
    ' Auteur    : Dolphy35 - http://dolphy35.developpez.com/
    ' Date      : 19/05/2008
    ' Détail    : Création d'un controle dans le menu d'Outlook
    '---------------------------------------------------------------------------------------
    '
    'Déclarations desobjets
        Dim objExplorer As Outlook.Explorer
        Dim objCommandBar As Office.CommandBar
        Dim objControl As Office.CommandBarButton
     
        'instance des objets
        Set objExplorer = Outlook.ActiveExplorer
        Set objCommandBar = objExplorer.CommandBars.Item("Menu Bar")
        Set objControl = objCommandBar.Controls.Add(, , , , True)
     
        'objet Control
        With objControl
            .Caption = "Créer une réunion"
            .FaceId = 463
            .Style = msoButtonIconAndCaption
            .Tag = "Créer une réunion"
            .OnAction = "Projet 1.ThisOutlookSession.CreationReunion"
            .Visible = True
        End With
     
        'libération des instances
        Set objExplorer = Nothing
        Set objCommandBar = Nothing
        Set objControl = Nothing
     
    End Sub
    Dolphy

  16. #16
    Membre du Club Avatar de Dailyplanet
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    Salut,

    Merci pour ta réponse. La méthode .Body ...parfait

    Pour le bouton, il est bien là mais sans effet.
    J'ai essayé de modifier le code, mais sans succès.

    J'ai toujours une deuxième solution pour ajouter un bouton assigné à une macro dans la barre d'outil: click droit sur la barre d'outils, Personnaliser, Commandes, Macros, glisser le bouton qui correspond à la macro de ThisOutlookSession.

    Si tu peux trouver l'erreur c'est avec plaisir que je suis preneur

    Dailyplanet

  17. #17
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 221
    Points
    11 221
    Par défaut
    Salut,

    Sinon tu mets la macro : CreationReunion dans un nouveau module et tu remplace cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .OnAction = "Projet 1.ThisOutlookSession.CreationReunion"
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .OnAction = "CreationReunion"
    Dolphy

  18. #18
    Membre du Club Avatar de Dailyplanet
    Inscrit en
    Mai 2008
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 92
    Points : 40
    Points
    40
    Par défaut
    C'est SUPER Dolphy35 j'ai exactement ce que je veux et je t'en remercie

    Peut-être un petit détail de cosmétique (après je clos le chapitre) :

    Si je veux créer une ou deux ligne d'espace avant le texte "Bonjour" dans la corps de ma demande de réunion (code .Body = "Bonjour") y-a-t-il un code ?

    Dailyplanet

  19. #19
    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 mets des chr(13) chr(10)

  20. #20
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 221
    Points
    11 221
    Par défaut
    re,

    la même chose avec des constantes VB :
    • vbCr
    • vbCrLf

    Dolphy

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [OL - 2003] Créer une demande de réunion
    Par Raptang dans le forum Outlook
    Réponses: 0
    Dernier message: 07/05/2010, 16h08
  2. Réponses: 1
    Dernier message: 23/04/2008, 11h34
  3. Réponses: 2
    Dernier message: 23/04/2007, 15h26
  4. [VBA-E] comment créer une bibliothèque de classes ?
    Par james-mi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 31/05/2006, 22h04
  5. [VBA-A]Comment créer une table à partir d'un recordset ?
    Par NoViceDel dans le forum VBA Access
    Réponses: 22
    Dernier message: 23/05/2006, 17h10

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