[VBA] Macro a partir d'un bouton de Outlook

Fermé
Uopip Messages postés 9 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 19 juin 2007 - 6 juin 2007 à 08:31
 manu - 31 janv. 2008 à 01:44
Bonjour a tous et a toutes

J'aimerais savoir si c'était possible d'assigner une macro a un bouton de outlook.
Plus precisement dans mon cas, j'aimerais savoir si lorsque l'utilisateur saisit un nouveau rendez-vous dans le calendrier, est-ce qu'il est possible d'executer une macro au moment ou il sauvegarde son rendez vous en appuyant sur le bouton bouton Save and close?

Pour info, j'utilise Outlook 2003.

Merci d'avance
A voir également:

11 réponses

Uopip Messages postés 9 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 19 juin 2007
6 juin 2007 à 10:44
Quelqu'un aurait un avis ou un début de piste ?
0
Uopip Messages postés 9 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 19 juin 2007
6 juin 2007 à 16:11
up
0
irem Messages postés 164 Date d'inscription mardi 22 mai 2007 Statut Membre Dernière intervention 9 octobre 2012 99
7 juin 2007 à 08:31
En fait, plusieurs pistes :

La plus simple et la plus rapide mais uniquement en locale (difficile à recopier sur un autre poste) :
1) Supprimer le bouton "enregistrer et fermer"
2) Coller le bouton de la macro voulue
3) Lui donner le look et le nom du bouton "enregistrer et fermer"

Une autre piste, plus complexe :
hooker l'événement "appointmentitem.save" ou "meetingitem.save"

Troisième voie (pour moi moins "propre" hooker les événements de la commandbar)

Irem
0
Uopip Messages postés 9 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 19 juin 2007
7 juin 2007 à 11:25
ok je te remercie !
La 1ere solution n'étant pas adaptée à mon besoin, je vais m'orienter vers la seconde.
Le souci est que je ne sais executer des macros que pendant certains évènements : les Applications Events (Quit, Reminder, Startup ...) en "surchargeant" les méthodes dans ThisOutlookSession. Mais les appointmentitem.save - meetingitem.save ne font pas parti des applications events, et je ne sais pas comment il faut procéder. Je cherche :)

En tout cas merci de ta réponse
0
irem Messages postés 164 Date d'inscription mardi 22 mai 2007 Statut Membre Dernière intervention 9 octobre 2012 99
7 juin 2007 à 11:34
Pour commencer, il va falloir suivre ce qu'il se passe en déclarant dans la session outlook

Dim WithEvents myInspectors As Outlook.Inspectors
et
Dim WithEvents myAppointMent As Outlook.AppointmentItem

ensuite détecter le changement d'Inspector

Private Sub myInspectors_NewInspector(ByVal Inspector As Inspector)
If Inspector.Class = olAppointmentItem Then
set myAppointMent=Inspector.currentItem
End If
End Sub

et enfin

private sub myAppointMent_Save()
'ton traitement ici
end sub

cela marche bien, reste à gérer le changement d'inspector car là je n'ai géré que les news mais l'utilisateur peut passer d'une fenètre à l'autre...

Irem
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Uopip Messages postés 9 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 19 juin 2007
7 juin 2007 à 11:53
J'ai copié ton code (les 2 déclarations et les 2 fonctions) dans ThisOutlookSession et je n'obtiens aucun résultat.
Je n'ai peut-être pas saisi comment exploiter ta réponse car je débute en VBA.
Merci
0
irem Messages postés 164 Date d'inscription mardi 22 mai 2007 Statut Membre Dernière intervention 9 octobre 2012 99
7 juin 2007 à 12:07
Effectivement l'explication était sommaire car le truc est tout de même pas évident à la base.

le fait que rien ne se passe est normal, rajoute des "msgbox" à certains endroit pour tracer ce qu'il se passe.


Irem
0
irem Messages postés 164 Date d'inscription mardi 22 mai 2007 Statut Membre Dernière intervention 9 octobre 2012 99
7 juin 2007 à 12:11
plus en détail

Dim WithEvents myInspectors As Outlook.Inspectors
Dim WithEvents myAppointMent As Outlook.AppointmentItem

Private Sub Application_Startup()
On Error Resume Next
Set myInspectors = ThisOutlookSession.Inspectors
On Error GoTo 0
End Sub

Private Sub myInspectors_NewInspector(ByVal Inspector As Inspector)
If Inspector.Class = olAppointmentItem Then
set myAppointMent=Inspector.currentItem
End If
End Sub

Private Sub myAppointMent_Close(Cancel As Boolean)
MsgBox "on quitte"
End Sub

Cela donne un premier squelette à faire évoluer en fonction de ton besoin, dis-moi ce que ca donne
0
Uopip Messages postés 9 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 19 juin 2007
7 juin 2007 à 13:31
Rien ne se produit ! Pas de msgbox !
Il me faudrait juste executer une vingtaine de ligne vba quand on clique sur "sauver et fermer".
Encore merci a toi
0
irem Messages postés 164 Date d'inscription mardi 22 mai 2007 Statut Membre Dernière intervention 9 octobre 2012 99
7 juin 2007 à 14:08
pernons les choses par le début, met un msgbox dans

Private Sub myInspectors_NewInspector(ByVal Inspector As Inspector)
msgbox inspector.class
If Inspector.Class = olAppointmentItem Then
set myAppointMent=Inspector.currentItem
End If
End Sub

vérifie que c'est bien un appointmentitem et non un meetingitem
0
Uopip Messages postés 9 Date d'inscription mercredi 6 juin 2007 Statut Membre Dernière intervention 19 juin 2007
7 juin 2007 à 14:45
Bien j'ai recopié ce bout de code et toujours rien :(
Qu'on soit d'accord de parler de la même chose, je mets le code dans MSVB de Outlook dans la partie ThisOutlookSession et je rentre un nouvel évènement dans le calendrier pour la vérification. Dans ce cas, rien ne se produit, pas de msgbox. Je me trompe ?
0
Le code est-il dans un module de classe?
0