Outlook : envoi de mail et ajout, modification et suprresion des rendez-vous dans le calendrier

3/5 (7 avis)

Snippet vu 24 378 fois - Téléchargée 31 fois

Contenu du snippet

J'ai eu un mal fou à trouver comment faire tout ça, alors je me suis dit que cela pourrait aider de faire une source permettant la MAJ du calendrier Outlook ainsi que l'envoi de mail.

Source / Exemple :


'Envoie de mail

Dim objOutlook as New Outlook.Application
Dim objOutlookMsg as Outlook.MailItem

Set objOutlookMsg = objOutlook.CreateItem(olMailItem)
With objOutlookMsg
       .To = "Adresse@Destinataire"
       .Subject = "Objet du message"
       .Body = "Texte du message"
       .Send
End With
Set objOutlookMsg = Nothing

'Ajout d'un rdv au calendrier

Dim objOutlook as New Outlook.Application
Dim objOutlookAppt as Outlook.AppointmentItem

Set objOutlookAppt = objOutlook.CreateItem(olAppointmentItem)
With objOutlookAppt
       .Start = "jj/mm/aaaa hh:mm"
       .Duration = x       'En minute
       .Subject = "Description du rendez-vous"
       .Save
End With

'Modifier/Supprimer un rdv du calendrier

Dim objOutlook as New Outlook.Application
Dim objOutlookAppt as Outlook.AppointmentItem
Dim objOutlookCalendar as Outlook.Items
Dim objOutlookNameSpace as Outlook.NameSpace
Dim DateDebut as String, DateFin as String

Set objOutlookNameSpace =  objOutlook.GetNameSpace("MAPI")
Set objOutlookCalendar = objOutlookNameSpace.GetDefaultFolder(olFolderCalendar).Items
objOutlookCalendar.Sort "[Start]"
objOutlookCalendar.IncludeReccurrences = True

DateDebut = "jj/mm/aaaa hh:mm"
DateFin = "jj/mm/aaaa hh:mm"

Set objOutlookAppt = objOutlookCalendar.Find("[Start] >= " " " & DateDebut & " " " and    [Start] <= " " " & DateFin & " " " ")
While TypeName(objOutlookAppt) <> "Nothing"
       If objOutlookAppt.Subject = "RDV recherché pour etre modifié" then
              objOutlookAppt.Subject = "Nouveau sujet"
              objOutlookAppt.Save
              Exit Sub
       End If

       If objOutlookAppt.Subject = "RDV recherché pour supprimé" then
              objOutlookAppt.Delete
              Exit Sub
       End If 
       Set objOutlookAppt = objOutlookCalendar.FindNext
Wend

Conclusion :


Une petite précision au sujet des dates : peu importe dans l'ajout, mais dans le objOutlookCalendar.Find(), il ne faut pas mettre les secondes dans les dates sinon il deboguera.

Point Important : rien ne marche... si vous n'avez pas cocher Microsoft Outlook x.0 Object Library dans Projet/Références, alors n'oubliez pas ;-)

Vérifié bien que Outlook est bien configuré, sinon, même si le code est bon, Outlook vous causera des problèmes.

A voir également

Ajouter un commentaire Commentaires
mitsh666 Messages postés 46 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 13 juin 2008 1
15 janv. 2009 à 16:40
Hello,

Perso, j'ai un soucis avec ton code lors de l'exécution de la ligne suivante :
objOutlookCalendar.IncludeReccurrences = True

J'ai aussi beaucoup chercher pour arriver à trouver qqch. Voici la solution que j'ai trouvée : http://www.vbfrance.com/codes/CREATION-CANCEL-MEETING-SUR-CALENDRIER-AUTRE-CELUI-COMPTE_48982.aspx

Ta solution de modification des rendez-vous ne me plaît pas du tout, car tu supprime un rendez-vous pour en recréer un nouveau. Cela n'est pas une mise à jour du rendez-vous. Si quelqu'un a modifier le rendez-vous sur outlook avant que tu fasse la tienne, tu écrase/annule/supprime sa modification avec ta méthode. Ton code permet de créer ou supprimer. et pour la suppression c'est pas encore ça. Imagine que tu aie 2 rendez-vous avec le même sujet! Ils sont supprimés les 2. (voilà le pourquoi de la note)
Ma solution ne contient malheureusement pas la mise à jour, car je n'ai pas trouvé comment la réaliser. Et ce malgré que j'arrive à charger le bon rendez-vous grâce à l'identifiant.

Je préfère ta méthode de recherche de meetings. Cela dis, j'avais lu sur un forum qu'il était mieux de faire une recherche for next que for each afin d'éviter des erreurs non définies par Microsoft (fiction ou réalité?). Du coup, j'ai modifier le code.

A+
cs_RENAUD34 Messages postés 18 Date d'inscription lundi 17 mai 2004 Statut Membre Dernière intervention 4 octobre 2007
14 mai 2008 à 15:26
merci pour le code, ça va enormément me rendre service.

3 rectifications pour la recherche (chez moi en tout cas):
1) objOutlookCalendar.IncludeRecurrences = True
2) DateDebut = "jj/mm/aaaa"
DateFin = "jj/mm/aaaa"
3) Set objOutlookAppt = objOutlookCalendar.Find("[Start]>= " & """" & DateDebut & """" & " and [Start]<=" & """" & DateFin & """")
phenixa77 Messages postés 3 Date d'inscription samedi 10 février 2007 Statut Membre Dernière intervention 30 juin 2007
16 déc. 2007 à 19:32
SLT
je vous remercie pour ce code , mais j aimerai bien savoir comment envoyé un mail à une date système précis
cs_gfortin9 Messages postés 7 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 27 février 2008
30 mai 2007 à 03:27
Un débutant ...
La ligne :
Set objOutlookAppt = objOutlookCalendar.Find("[Start] >= " " " & DateDebut & " " " and [Start] <= " " " & DateFin & " " " ")

me donne une erreur de syntaxe.
cs_dchrist Messages postés 39 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 21 mai 2015
4 mai 2007 à 16:01
Bonjour,

Super !!! Un gros merci...
Depuis quelques jours je recherche comment fixer ma recherche sur des RDV de mon calendrier OUTLOOK selon une date précise.
Je réussissais bien à avoir une liste mais je récupérais tous les RDV.

Par contre, je ne peux pas appliquer la commande suivante :
objOutlookCalendar.IncludeReccurrences = True
??????
Je pense que c'est lié au RDV avec une périodicité.

Encore merci !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.