[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
manu - 31 janv. 2008 à 01:44
A voir également:
- [VBA] Macro a partir d'un bouton de Outlook
- Creer un groupe whatsapp a partir d'un autre groupe - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Créer un compte outlook - Guide
- Macro word - Guide
- Postmaster outlook - Forum Hotmail / Outlook.com
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
6 juin 2007 à 10:44
Quelqu'un aurait un avis ou un début de piste ?
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
6 juin 2007 à 16:11
up
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
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
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
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
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
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
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
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
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
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
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
Je n'ai peut-être pas saisi comment exploiter ta réponse car je débute en VBA.
Merci
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
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
le fait que rien ne se passe est normal, rajoute des "msgbox" à certains endroit pour tracer ce qu'il se passe.
Irem
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
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
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
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
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
Il me faudrait juste executer une vingtaine de ligne vba quand on clique sur "sauver et fermer".
Encore merci a toi
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
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
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
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
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 ?
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 ?