Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Outlook > VBA Outlook

Réponse
 
Outils de la discussion
Vieux 15/05/2008, 15h16   #1 (permalink)
Nouveau membre du Club
 
Avatar de Dailyplanet
 
Date d'inscription: mai 2008
Localisation: Suisse, Lausanne
Messages: 63
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.

Dernière modification par Dailyplanet ; 15/05/2008 à 15h44
Dailyplanet est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 15/05/2008, 19h47   #2 (permalink)
Responsable Outlook
 
Avatar de Dolphy35
 
Date d'inscription: octobre 2004
Localisation: Rennes
Messages: 3 311
Envoyer un message via MSN à Dolphy35 Envoyer un message via Skype™ à Dolphy35
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
__________________
Initiation au VBA d'Outlook
venez défier mabrute
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/05/2008, 09h08   #3 (permalink)
Nouveau membre du Club
 
Avatar de Dailyplanet
 
Date d'inscription: mai 2008
Localisation: Suisse, Lausanne
Messages: 63
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
Dailyplanet est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/05/2008, 09h59   #4 (permalink)
Responsable Outlook
 
Avatar de Dolphy35
 
Date d'inscription: octobre 2004
Localisation: Rennes
Messages: 3 311
Envoyer un message via MSN à Dolphy35 Envoyer un message via Skype™ à Dolphy35
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
__________________
Initiation au VBA d'Outlook
venez défier mabrute
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/05/2008, 11h01   #5 (permalink)
Nouveau membre du Club
 
Avatar de Dailyplanet
 
Date d'inscription: mai 2008
Localisation: Suisse, Lausanne
Messages: 63
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
Dailyplanet est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/05/2008, 14h15   #6 (permalink)
Responsable Outlook
 
Avatar de Dolphy35
 
Date d'inscription: octobre 2004
Localisation: Rennes
Messages: 3 311
Envoyer un message via MSN à Dolphy35 Envoyer un message via Skype™ à Dolphy35
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
__________________
Initiation au VBA d'Outlook
venez défier mabrute
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/05/2008, 14h53   #7 (permalink)
Responsable Outlook
 
Avatar de Dolphy35
 
Date d'inscription: octobre 2004
Localisation: Rennes
Messages: 3 311
Envoyer un message via MSN à Dolphy35 Envoyer un message via Skype™ à Dolphy35
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 :
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 :
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
__________________
Initiation au VBA d'Outlook
venez défier mabrute
Je ne réponds pas aux questions techniques par MP

Dernière modification par Dolphy35 ; 16/05/2008 à 23h36
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/05/2008, 19h10   #8 (permalink)
Nouveau membre du Club
 
Avatar de Dailyplanet
 
Date d'inscription: mai 2008
Localisation: Suisse, Lausanne
Messages: 63
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
Dailyplanet est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 16/05/2008, 20h51   #9 (permalink)
Responsable Outlook
 
Avatar de Dolphy35
 
Date d'inscription: octobre 2004
Localisation: Rennes
Messages: 3 311
Envoyer un message via MSN à Dolphy35 Envoyer un message via Skype™ à Dolphy35
Par défaut

re,

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

Code :
.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
__________________
Initiation au VBA d'Outlook
venez défier mabrute
Je ne réponds pas aux questions techniques par MP

Dernière modification par Dolphy35 ; 16/05/2008 à 23h36
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/05/2008, 09h47   #10 (permalink)
Nouveau membre du Club
 
Avatar de Dailyplanet
 
Date d'inscription: mai 2008
Localisation: Suisse, Lausanne
Messages: 63
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
Dailyplanet est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/05/2008, 10h27   #11 (permalink)
Responsable Outlook
 
Avatar de Dolphy35
 
Date d'inscription: octobre 2004
Localisation: Rennes
Messages: 3 311
Envoyer un message via MSN à Dolphy35 Envoyer un message via Skype™ à Dolphy35
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
__________________
Initiation au VBA d'Outlook
venez défier mabrute
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/05/2008, 13h37   #12 (permalink)
Nouveau membre du Club
 
Avatar de Dailyplanet
 
Date d'inscription: mai 2008
Localisation: Suisse, Lausanne
Messages: 63
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
Dailyplanet est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/05/2008, 16h58   #13 (permalink)
Responsable Outlook
 
Avatar de Dolphy35
 
Date d'inscription: octobre 2004
Localisation: Rennes
Messages: 3 311
Envoyer un message via MSN à Dolphy35 Envoyer un message via Skype™ à Dolphy35
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
__________________
Initiation au VBA d'Outlook
venez défier mabrute
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/05/2008, 08h54   #14 (permalink)
Nouveau membre du Club
 
Avatar de Dailyplanet
 
Date d'inscription: mai 2008
Localisation: Suisse, Lausanne
Messages: 63
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
Dailyplanet est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 19/05/2008, 17h19   #15 (permalink)
Responsable Outlook
 
Avatar de Dolphy35
 
Date d'inscription: octobre 2004
Localisation: Rennes
Messages: 3 311
Envoyer un message via MSN à Dolphy35 Envoyer un message via Skype™ à Dolphy35
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 :
Code :
.Body = "Bonjour"
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 :
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
__________________
Initiation au VBA d'Outlook
venez défier mabrute
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBAACCESS

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Outlook > VBA Outlook



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide