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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 817 fois - Téléchargée 29 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

Messages postés
46
Date d'inscription
dimanche 10 octobre 2004
Statut
Membre
Dernière intervention
13 juin 2008
1
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+
Messages postés
18
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
4 octobre 2007

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 & """")
Messages postés
3
Date d'inscription
samedi 10 février 2007
Statut
Membre
Dernière intervention
30 juin 2007

SLT
je vous remercie pour ce code , mais j aimerai bien savoir comment envoyé un mail à une date système précis
Messages postés
7
Date d'inscription
samedi 19 novembre 2005
Statut
Membre
Dernière intervention
27 février 2008

Un débutant ...
La ligne :
Set objOutlookAppt = objOutlookCalendar.Find("[Start] >= " " " & DateDebut & " " " and [Start] <= " " " & DateFin & " " " ")

me donne une erreur de syntaxe.
Messages postés
39
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
21 mai 2015

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 !
Afficher les 7 commentaires

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.