Outlook 2007 - changer la disponibilité en fonction du libellé du Rdv (avec VBA)
5 réponses
DarthMac
Bonjour à tous,
vieux macroteur Excel, j'avoue que je ne suis pas très doué sur
Outlook. La vérité est que je ne suis qu'un amateur qui en passe
parfois par l'enregistreur de macro avant de réécrire le script avec
mes ptits doigts...
Ce que je souhaite faire dans Outlook pourrait être une fonction
d'origine, du type de la mise en forme conditionnelle des RdV, mais ce
ne l'est pas hélas. En effet, ce que je voudrais, c'est que la
disponibilité d'un RdV change en fonction du libellé. Je mets
régulièrement dans mon agenda des tâches (je sais, je devrais utiliser
les Tâches, mais cela ne répond pas à mon attente) et déjà celles-ci se
mettent dans une couleur spécifique (pour moi du moins) directement sur
le mot "tache" présent dans leur libellé. Je voudrais qu'Outlook me les
mette aussi en "disponible" par défaut parce que me réserver une plage
pour une tâche ne doit pas empêcher qu'on me propose des RdV.
J'ai cherché une solution sans VBA et avec VBA et pour une fois, Google
ne fut pas mon ami...
Je suis assez expérimenté en macros pour savoir que cela ne doit pas
représenter plus des quelques dizaines de lignes de code au plus mais
pas assez expérimenté pour savoir comment et par où commencer.
J'ai bien trouvé quelque chose qui semblerait pouvoir me donner des
éléments (conversation : "Détecter un événement" du 23.07.09 au
28.08.09) mais j'avoue que mes connaissances de VB sont trop "excel"
pour que je me débrouille avec ça.
L'un de nos Jedis du VBA saurait-il enseigner le padawan que je suis ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Geo
Bonjour Mac
Il y a des différences assez fondamentales avec le vba Excel, en particulier le fait que Outlook traite essentiellement des éléments au fil de l'eau, (voir la conversation de l'ami Yves juste au dessus). Et il concerne des dossiers qui ont théoriquement des éléments spécifiques, mais parfois différents.
Si on fait comme dans Excel, ce serait une boucle dans votre calendrier sur les tâches placée dans les rendez-vous et mettre "libre". Et on déclenche la macro, soit manuellement, soit à l'ouverture ou la fermeture de Outlook. Si on veut le faire chaque fois que vous créez une tache, il faut passer par les événements.
Pour commencer regardez : http://faq-outlook.fr/articles.php?cat_id
-- A+
Bonjour Mac
Il y a des différences assez fondamentales avec le vba Excel, en
particulier le fait que Outlook traite essentiellement des éléments au
fil de l'eau, (voir la conversation de l'ami Yves juste au dessus).
Et il concerne des dossiers qui ont théoriquement des éléments
spécifiques, mais parfois différents.
Si on fait comme dans Excel, ce serait une boucle dans votre calendrier
sur les tâches placée dans les rendez-vous et mettre "libre".
Et on déclenche la macro, soit manuellement, soit à l'ouverture ou la
fermeture de Outlook.
Si on veut le faire chaque fois que vous créez une tache, il faut
passer par les événements.
Pour commencer regardez :
http://faq-outlook.fr/articles.php?cat_id
Il y a des différences assez fondamentales avec le vba Excel, en particulier le fait que Outlook traite essentiellement des éléments au fil de l'eau, (voir la conversation de l'ami Yves juste au dessus). Et il concerne des dossiers qui ont théoriquement des éléments spécifiques, mais parfois différents.
Si on fait comme dans Excel, ce serait une boucle dans votre calendrier sur les tâches placée dans les rendez-vous et mettre "libre". Et on déclenche la macro, soit manuellement, soit à l'ouverture ou la fermeture de Outlook. Si on veut le faire chaque fois que vous créez une tache, il faut passer par les événements.
Pour commencer regardez : http://faq-outlook.fr/articles.php?cat_id
-- A+
DarthMac
Merci Jedi Geo ;-)
je pensais effectivement plutôt à un déclenchement sur évènement. D'où ma référence vers la conversation : "Détecter un événement" (du 23.07.09 au 28.08.09 entre Eddy et Geo - i.e. vous-même) qui traite d'évènements modif_item et ajout_idem... mais j'avoue que le vocabulaire est légèrement abscons. Pour la FAQ Outlook, j'ai déjà 'trainé' là puisque j'utilise des macros d'Oliv et d'Anacoluthe légèrement modifiées. J'admets que c'est plus facile pour moi quand j'ai une bonne macro en base de travail. En partant de rien, j'ai plus de mal et il est vrai que mon appel espérait que l'on m'orienta vers une macro déjà existante qui pourrait m'aider...
bonne nuitée !
f
Le 01/03/2010, Geo a supposé :
Bonjour Mac
Il y a des différences assez fondamentales avec le vba Excel, en particulier le fait que Outlook traite essentiellement des éléments au fil de l'eau, (voir la conversation de l'ami Yves juste au dessus). Et il concerne des dossiers qui ont théoriquement des éléments spécifiques, mais parfois différents.
Si on fait comme dans Excel, ce serait une boucle dans votre calendrier sur les tâches placée dans les rendez-vous et mettre "libre". Et on déclenche la macro, soit manuellement, soit à l'ouverture ou la fermeture de Outlook. Si on veut le faire chaque fois que vous créez une tache, il faut passer par les événements.
Pour commencer regardez : http://faq-outlook.fr/articles.php?cat_id
Merci Jedi Geo ;-)
je pensais effectivement plutôt à un déclenchement sur évènement. D'où
ma référence vers la conversation : "Détecter un événement" (du
23.07.09 au 28.08.09 entre Eddy et Geo - i.e. vous-même) qui traite
d'évènements modif_item et ajout_idem... mais j'avoue que le
vocabulaire est légèrement abscons. Pour la FAQ Outlook, j'ai déjà
'trainé' là puisque j'utilise des macros d'Oliv et d'Anacoluthe
légèrement modifiées. J'admets que c'est plus facile pour moi quand
j'ai une bonne macro en base de travail. En partant de rien, j'ai plus
de mal et il est vrai que mon appel espérait que l'on m'orienta vers
une macro déjà existante qui pourrait m'aider...
bonne nuitée !
f
Le 01/03/2010, Geo a supposé :
Bonjour Mac
Il y a des différences assez fondamentales avec le vba Excel, en particulier
le fait que Outlook traite essentiellement des éléments au fil de l'eau,
(voir la conversation de l'ami Yves juste au dessus).
Et il concerne des dossiers qui ont théoriquement des éléments spécifiques,
mais parfois différents.
Si on fait comme dans Excel, ce serait une boucle dans votre calendrier sur
les tâches placée dans les rendez-vous et mettre "libre".
Et on déclenche la macro, soit manuellement, soit à l'ouverture ou la
fermeture de Outlook.
Si on veut le faire chaque fois que vous créez une tache, il faut passer par
les événements.
Pour commencer regardez :
http://faq-outlook.fr/articles.php?cat_id
je pensais effectivement plutôt à un déclenchement sur évènement. D'où ma référence vers la conversation : "Détecter un événement" (du 23.07.09 au 28.08.09 entre Eddy et Geo - i.e. vous-même) qui traite d'évènements modif_item et ajout_idem... mais j'avoue que le vocabulaire est légèrement abscons. Pour la FAQ Outlook, j'ai déjà 'trainé' là puisque j'utilise des macros d'Oliv et d'Anacoluthe légèrement modifiées. J'admets que c'est plus facile pour moi quand j'ai une bonne macro en base de travail. En partant de rien, j'ai plus de mal et il est vrai que mon appel espérait que l'on m'orienta vers une macro déjà existante qui pourrait m'aider...
bonne nuitée !
f
Le 01/03/2010, Geo a supposé :
Bonjour Mac
Il y a des différences assez fondamentales avec le vba Excel, en particulier le fait que Outlook traite essentiellement des éléments au fil de l'eau, (voir la conversation de l'ami Yves juste au dessus). Et il concerne des dossiers qui ont théoriquement des éléments spécifiques, mais parfois différents.
Si on fait comme dans Excel, ce serait une boucle dans votre calendrier sur les tâches placée dans les rendez-vous et mettre "libre". Et on déclenche la macro, soit manuellement, soit à l'ouverture ou la fermeture de Outlook. Si on veut le faire chaque fois que vous créez une tache, il faut passer par les événements.
Pour commencer regardez : http://faq-outlook.fr/articles.php?cat_id
Geo
Bonjour
Merci Jedi Geo ;-)
je pensais effectivement plutôt à un déclenchement sur évènement. D'où ma référence vers la conversation : "Détecter un événement" (du 23.07.09 au 28.08.09 entre Eddy et Geo - i.e. vous-même) qui traite d'évènements modif_item et ajout_idem... mais j'avoue que le vocabulaire est légèrement abscons. Pour la FAQ Outlook, j'ai déjà 'trainé' là puisque j'utilise des macros d'Oliv et d'Anacoluthe légèrement modifiées. J'admets que c'est plus facile pour moi quand j'ai une bonne macro en base de travail. En partant de rien, j'ai plus de mal et il est vrai que mon appel espérait que l'on m'orienta vers une macro déjà existante qui pourrait m'aider...
Il me semble qu'Eddy avait donné sa solution. Sinon, même réponse qu'à l'ami Yves : j'essaie de regarder dans la journée.
-- A+
Bonjour
Merci Jedi Geo ;-)
je pensais effectivement plutôt à un déclenchement sur évènement. D'où ma référence
vers la conversation : "Détecter un événement" (du 23.07.09 au 28.08.09 entre Eddy et
Geo - i.e. vous-même) qui traite d'évènements modif_item et ajout_idem... mais j'avoue
que le vocabulaire est légèrement abscons. Pour la FAQ Outlook, j'ai déjà 'trainé' là
puisque j'utilise des macros d'Oliv et d'Anacoluthe légèrement modifiées. J'admets que
c'est plus facile pour moi quand j'ai une bonne macro en base de travail. En partant de
rien, j'ai plus de mal et il est vrai que mon appel espérait que l'on m'orienta vers
une macro déjà existante qui pourrait m'aider...
Il me semble qu'Eddy avait donné sa solution.
Sinon, même réponse qu'à l'ami Yves : j'essaie de regarder dans la
journée.
je pensais effectivement plutôt à un déclenchement sur évènement. D'où ma référence vers la conversation : "Détecter un événement" (du 23.07.09 au 28.08.09 entre Eddy et Geo - i.e. vous-même) qui traite d'évènements modif_item et ajout_idem... mais j'avoue que le vocabulaire est légèrement abscons. Pour la FAQ Outlook, j'ai déjà 'trainé' là puisque j'utilise des macros d'Oliv et d'Anacoluthe légèrement modifiées. J'admets que c'est plus facile pour moi quand j'ai une bonne macro en base de travail. En partant de rien, j'ai plus de mal et il est vrai que mon appel espérait que l'on m'orienta vers une macro déjà existante qui pourrait m'aider...
Il me semble qu'Eddy avait donné sa solution. Sinon, même réponse qu'à l'ami Yves : j'essaie de regarder dans la journée.
-- A+
Geo
Bonsoir
Comme Yves a fait l'essentiel du travail, j'ai adapté et pas trop testé : A placer dans ThisOutlookSession.
Option Explicit Public WithEvents myOlItems As Outlook.Items Dim NS As NameSpace, m As Items
Private Sub Application_Startup() Dim MonAgenda As MAPIFolder Set NS = GetNamespace("MAPI") Set MonAgenda = NS.GetDefaultFolder(olFolderCalendar) If MonAgenda Is Nothing Then MsgBox "Pas trouvé l'agenda" Exit Sub End If Set myOlItems = MonAgenda.Items End Sub
Private Sub myOlItems_ItemAdd(ByVal m As Object) ' Variable intermédiaire pour profiter de l'intellisense Dim RendezVous As AppointmentItem Dim p As Long If TypeName(m) = "AppointmentItem" Then ' rendez-vous Set RendezVous = m p = InStr(1, RendezVous.Subject, "tache") If p > 0 Then RendezVous.BusyStatus = olFree End If End If End Sub
-- A+
Bonsoir
Comme Yves a fait l'essentiel du travail,
j'ai adapté et pas trop testé :
A placer dans ThisOutlookSession.
Option Explicit
Public WithEvents myOlItems As Outlook.Items
Dim NS As NameSpace, m As Items
Private Sub Application_Startup()
Dim MonAgenda As MAPIFolder
Set NS = GetNamespace("MAPI")
Set MonAgenda = NS.GetDefaultFolder(olFolderCalendar)
If MonAgenda Is Nothing Then
MsgBox "Pas trouvé l'agenda"
Exit Sub
End If
Set myOlItems = MonAgenda.Items
End Sub
Private Sub myOlItems_ItemAdd(ByVal m As Object)
' Variable intermédiaire pour profiter de l'intellisense
Dim RendezVous As AppointmentItem
Dim p As Long
If TypeName(m) = "AppointmentItem" Then ' rendez-vous
Set RendezVous = m
p = InStr(1, RendezVous.Subject, "tache")
If p > 0 Then
RendezVous.BusyStatus = olFree
End If
End If
End Sub
Comme Yves a fait l'essentiel du travail, j'ai adapté et pas trop testé : A placer dans ThisOutlookSession.
Option Explicit Public WithEvents myOlItems As Outlook.Items Dim NS As NameSpace, m As Items
Private Sub Application_Startup() Dim MonAgenda As MAPIFolder Set NS = GetNamespace("MAPI") Set MonAgenda = NS.GetDefaultFolder(olFolderCalendar) If MonAgenda Is Nothing Then MsgBox "Pas trouvé l'agenda" Exit Sub End If Set myOlItems = MonAgenda.Items End Sub
Private Sub myOlItems_ItemAdd(ByVal m As Object) ' Variable intermédiaire pour profiter de l'intellisense Dim RendezVous As AppointmentItem Dim p As Long If TypeName(m) = "AppointmentItem" Then ' rendez-vous Set RendezVous = m p = InStr(1, RendezVous.Subject, "tache") If p > 0 Then RendezVous.BusyStatus = olFree End If End If End Sub
-- A+
DarthMac
Hello Geo,
j'ai eu une légère absence... non non je ne suis pas de ceux qui ne reviennent jamais et ne disent pas merci. Alors c'est dit : merci grandement. Je vais tester ça.
Sorry j'ai eu un peu d'occupation depuis mon dernier message !
A bientôt pour des nouvelles du front !
Mac
Geo a formulé ce mercredi :
Bonsoir
Comme Yves a fait l'essentiel du travail, j'ai adapté et pas trop testé : A placer dans ThisOutlookSession.
Option Explicit Public WithEvents myOlItems As Outlook.Items Dim NS As NameSpace, m As Items
Private Sub Application_Startup() Dim MonAgenda As MAPIFolder Set NS = GetNamespace("MAPI") Set MonAgenda = NS.GetDefaultFolder(olFolderCalendar) If MonAgenda Is Nothing Then MsgBox "Pas trouvé l'agenda" Exit Sub End If Set myOlItems = MonAgenda.Items End Sub
Private Sub myOlItems_ItemAdd(ByVal m As Object) ' Variable intermédiaire pour profiter de l'intellisense Dim RendezVous As AppointmentItem Dim p As Long If TypeName(m) = "AppointmentItem" Then ' rendez-vous Set RendezVous = m p = InStr(1, RendezVous.Subject, "tache") If p > 0 Then RendezVous.BusyStatus = olFree End If End If End Sub
Hello Geo,
j'ai eu une légère absence... non non je ne suis pas de ceux qui ne
reviennent jamais et ne disent pas merci. Alors c'est dit : merci
grandement. Je vais tester ça.
Sorry j'ai eu un peu d'occupation depuis mon dernier message !
A bientôt pour des nouvelles du front !
Mac
Geo a formulé ce mercredi :
Bonsoir
Comme Yves a fait l'essentiel du travail,
j'ai adapté et pas trop testé :
A placer dans ThisOutlookSession.
Option Explicit
Public WithEvents myOlItems As Outlook.Items
Dim NS As NameSpace, m As Items
Private Sub Application_Startup()
Dim MonAgenda As MAPIFolder
Set NS = GetNamespace("MAPI")
Set MonAgenda = NS.GetDefaultFolder(olFolderCalendar)
If MonAgenda Is Nothing Then
MsgBox "Pas trouvé l'agenda"
Exit Sub
End If
Set myOlItems = MonAgenda.Items
End Sub
Private Sub myOlItems_ItemAdd(ByVal m As Object)
' Variable intermédiaire pour profiter de l'intellisense
Dim RendezVous As AppointmentItem
Dim p As Long
If TypeName(m) = "AppointmentItem" Then ' rendez-vous
Set RendezVous = m
p = InStr(1, RendezVous.Subject, "tache")
If p > 0 Then
RendezVous.BusyStatus = olFree
End If
End If
End Sub
j'ai eu une légère absence... non non je ne suis pas de ceux qui ne reviennent jamais et ne disent pas merci. Alors c'est dit : merci grandement. Je vais tester ça.
Sorry j'ai eu un peu d'occupation depuis mon dernier message !
A bientôt pour des nouvelles du front !
Mac
Geo a formulé ce mercredi :
Bonsoir
Comme Yves a fait l'essentiel du travail, j'ai adapté et pas trop testé : A placer dans ThisOutlookSession.
Option Explicit Public WithEvents myOlItems As Outlook.Items Dim NS As NameSpace, m As Items
Private Sub Application_Startup() Dim MonAgenda As MAPIFolder Set NS = GetNamespace("MAPI") Set MonAgenda = NS.GetDefaultFolder(olFolderCalendar) If MonAgenda Is Nothing Then MsgBox "Pas trouvé l'agenda" Exit Sub End If Set myOlItems = MonAgenda.Items End Sub
Private Sub myOlItems_ItemAdd(ByVal m As Object) ' Variable intermédiaire pour profiter de l'intellisense Dim RendezVous As AppointmentItem Dim p As Long If TypeName(m) = "AppointmentItem" Then ' rendez-vous Set RendezVous = m p = InStr(1, RendezVous.Subject, "tache") If p > 0 Then RendezVous.BusyStatus = olFree End If End If End Sub