Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Outlook > VBA Outlook
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/05/2008, 15h16   #1
Candidat au titre de Membre du Club
 
Avatar de Dailyplanet
 
Inscription : mai 2008
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 92
Points : 12
Points : 12
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.
Dailyplanet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 19h47   #2
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 745
Points : 8 745
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
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2008, 09h08   #3
Candidat au titre de Membre du Club
 
Avatar de Dailyplanet
 
Inscription : mai 2008
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 92
Points : 12
Points : 12
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 00
Vieux 16/05/2008, 09h59   #4
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 745
Points : 8 745
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
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2008, 11h01   #5
Candidat au titre de Membre du Club
 
Avatar de Dailyplanet
 
Inscription : mai 2008
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 92
Points : 12
Points : 12
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 00
Vieux 16/05/2008, 14h15   #6
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 745
Points : 8 745
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
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2008, 14h53   #7
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 745
Points : 8 745
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 :
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 :
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
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2008, 19h10   #8
Candidat au titre de Membre du Club
 
Avatar de Dailyplanet
 
Inscription : mai 2008
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 92
Points : 12
Points : 12
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 00
Vieux 16/05/2008, 20h51   #9
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 745
Points : 8 745
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
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2008, 09h47   #10
Candidat au titre de Membre du Club
 
Avatar de Dailyplanet
 
Inscription : mai 2008
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 92
Points : 12
Points : 12
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 00
Vieux 17/05/2008, 10h27   #11
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 745
Points : 8 745
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
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2008, 13h37   #12
Candidat au titre de Membre du Club
 
Avatar de Dailyplanet
 
Inscription : mai 2008
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 92
Points : 12
Points : 12
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 00
Vieux 17/05/2008, 16h58   #13
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 745
Points : 8 745
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
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 08h54   #14
Candidat au titre de Membre du Club
 
Avatar de Dailyplanet
 
Inscription : mai 2008
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 92
Points : 12
Points : 12
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 00
Vieux 19/05/2008, 17h19   #15
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 745
Points : 8 745
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 :
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
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 09h33   #16
Candidat au titre de Membre du Club
 
Avatar de Dailyplanet
 
Inscription : mai 2008
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 92
Points : 12
Points : 12
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
Dailyplanet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 14h36   #17
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 745
Points : 8 745
Salut,

Sinon tu mets la macro : CreationReunion dans un nouveau module et tu remplace cette ligne :
Code :
.OnAction = "Projet 1.ThisOutlookSession.CreationReunion"
par :
Code :
.OnAction = "CreationReunion"
Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 15h17   #18
Candidat au titre de Membre du Club
 
Avatar de Dailyplanet
 
Inscription : mai 2008
Messages : 92
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 92
Points : 12
Points : 12
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
Dailyplanet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 17h03   #19
Membre chevronné
 
Avatar de Oliv-
 
Inscription : mars 2006
Messages : 643
Détails du profil
Informations personnelles :
Âge : 41

Informations forums :
Inscription : mars 2006
Messages : 643
Points : 699
Points : 699
Tu mets des chr(13) chr(10)
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 17h13   #20
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 106
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 106
Points : 8 745
Points : 8 745
re,

la même chose avec des constantes VB :
  • vbCr
  • vbCrLf
Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h03.


 
 
 
 
Partenaires

Hébergement Web