![]() |
| 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é. | |||||||
|
|||||||
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mai 2008
Localisation: Suisse, Lausanne
Messages: 63
|
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 |
|
|
|
|
|
#2 (permalink) |
![]() |
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 Je ne réponds pas aux questions techniques par MP
|
|
|
|
|
|
#3 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mai 2008
Localisation: Suisse, Lausanne
Messages: 63
|
Bonjour,
Je débute en VBA 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 (permalink) |
![]() |
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-5pour 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 Je ne réponds pas aux questions techniques par MP
|
|
|
|
|
|
#6 (permalink) |
![]() |
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-CDolphy
__________________
Initiation au VBA d'Outlook Je ne réponds pas aux questions techniques par MP
|
|
|
|
|
|
#7 (permalink) |
![]() |
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 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 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 Je ne réponds pas aux questions techniques par MP
Dernière modification par Dolphy35 ; 16/05/2008 à 23h36 |
|
|
|
|
|
#8 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mai 2008
Localisation: Suisse, Lausanne
Messages: 63
|
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 (permalink) |
![]() |
re,
pour assigner une action au contrôle c'est cette ligne : Code :
.OnAction = "Projet 1.ThisOutlookSession.CreationReunion" 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 Je ne réponds pas aux questions techniques par MP
Dernière modification par Dolphy35 ; 16/05/2008 à 23h36 |
|
|
|
|
|
#10 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mai 2008
Localisation: Suisse, Lausanne
Messages: 63
|
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" 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 Dailyplanet |
|
|
|
|
|
#11 (permalink) |
![]() |
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 Je ne réponds pas aux questions techniques par MP
|
|
|
|
|
|
#12 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mai 2008
Localisation: Suisse, Lausanne
Messages: 63
|
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 (permalink) |
![]() |
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 Je ne réponds pas aux questions techniques par MP
|
|
|
|
|
|
#14 (permalink) |
|
Nouveau membre du Club
![]() Date d'inscription: mai 2008
Localisation: Suisse, Lausanne
Messages: 63
|
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 (permalink) |
![]() |
Salut,
Ce message survient car tu n'a pas de mail sélectionné Sinon pour ajouter du texte il faut utiliser la méthode Body, dans le with objReunion ajoute cette ligne : Code :
.Body = "Bonjour" 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
__________________
Initiation au VBA d'Outlook Je ne réponds pas aux questions techniques par MP
|
|
|
|
|
![]() |
![]() |
||
[VBA Outlook] Comment créer une demande de réunion à l'expéditeur d'un mail
|
||
| Outils de la discussion | |
|
|