Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Outlook 2007 - changer la disponibilité en fonction du libellé du Rdv (avec VBA)

5 réponses
Avatar
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 ?

Merci et bonne semaine,

Mac

5 réponses

Avatar
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+
Avatar
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


Avatar
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+
Avatar
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+
Avatar
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