Developpez.com - Rubrique Access

Le Club des Développeurs et IT Pro

Mise à jour des rendez-vous entre Access et Outlook

Un tutoriel de Denis Hulo

Le 2018-04-25 20:35:51, par User, Rédacteur/Modérateur
Bonjour à tous,

Je vous propose un nouvel article sur l'interaction entre Access et Outlook avec cette fois la synchronisation des rendez-vous entre Access et Outlook :

Synchronisation des rendez-vous entre Access et Outlook

L'objectif étant de partir d'un exemple simple, avec un formulaire Access comportant une liste de rendez-vous, classés par date et heure, avec la possibilité de filtrer ces rendez-vous suivant une certaine période.

A partir de ce formulaire je peux importer ou exporter les rendez-vous en fonction de la période et du calendrier choisis.

Procédures de mise à jour :

Importations des rendez-vous Outlook dans Access.
Exportations des rendez-vous Access dans Outlook.
Suppression d'un rendez-vous dans Access ou Outlook.


Bonne lecture,
Cordialement,
  Discussion forum
4 commentaires
  • Oliv-
    Expert éminent
    Bonjour et Félicitations c'est un beau travail.

    J'ai juste quelques remarques à faire

    L'utilisation du entryID et StoreId fait que la vérification de l'existence du rdv côté Outlook ne fonctionne que si c'est le même compte, donc attention à celui qui voudrait utiliser cela avec plusieurs Utilisateurs.

    Avec plusieurs comptes (pour le même utilisateur donc) dans le code ce serait mieux d'utiliser GetitemFromID avec le EntryIDStore (expression.GetItemFromID(EntryIDItem, EntryIDStore))

    Pour le parcours des rdv coté Outlook il serait plus rapide d'utiliser une table

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Sub Test_GetTable_appointments()
        Dim oFolder As Outlook.Folder
        Dim criteria
        Dim oTable As Table
        Dim i, oRow, R, arr
        Set oFolder = Application.Session.GetDefaultFolder(olFolderCalendar)
        criteria = "[MessageClass] = 'IPM.Appointment'"
    
        Dim DateToCheck As Date
        DateToCheck = Date
        'On cherche entre la date -1mois et demain
        FILTRE = " and [Start] >= '" & Format(DateAdd("M", -1, DateToCheck), "ddddd") & " 0:00 AM' "
        FILTRE = FILTRE & " and [Start] <= '" & Format(DateAdd("d", 1, DateToCheck), "ddddd") & " 0:00 AM' "
    
        Set oTable = oFolder.GetTable(criteria & FILTRE, olUserItems)
        With oTable.Columns
            'par defaut
            '1 EntryID
            '2 Subject
            '3 CreationTime
            '4 LastModificationTime
            '5 MessageClass
            '6 Start
            '7 End
            '8 IsRecurring
            .add ("Location")
            .add ("Categories")
            .add ("BillingInformation")
            .add ("ReminderSet")
            .add ("http://schemas.microsoft.com/mapi/proptag/0x1000001F")    'body
        End With
        oTable.sort "Start", True
    
        MsgBox oTable.GetRowCount, , "Nombre de rdv trouvés (filtre)"
        Do Until (oTable.EndOfTable)
            Set oRow = oTable.GetNextRow()
            If Year(oRow("Start")) <= 2018 Then
                MsgBox oRow("Subject") & vbCr & _
                       oRow("Start") & vbTab & "-->" & oRow("End") & vbCr & _
                       "Categories =" & oRow("Categories") & vbCr & _
                       "BillingInformation=" & oRow("BillingInformation") & vbCr & _
                       "ReminderSet=" & oRow("ReminderSet") & vbCr & _
                       "Body=" & oRow("http://schemas.microsoft.com/mapi/proptag/0x1000001F")
            End If
        Loop
    
    End Sub
    Tu peux avec .GetArray convertir cette Table en Array.

    Encore bravo
  • User
    Rédacteur/Modérateur
    Merci bien !

    C'est vrai qu'il y a une beaucoup de possibilités pour extraire ces rendez-vous, j'ai essayé de faire au plus simple, mais merci pour tes remarques fort utiles.

    Je rajouterais que la manière de filtrer les dates sous Outlook n'est pas très simple pour les accessiens, je me souviens avoir eu des soucis pour récupérer les rendez-vous selon une certaine période avec restrict.

    Cdlt,
  • Nancy3608
    Nouveau Candidat au Club
    Bonjour, Y-a-t-il une façon d'avoir accès à plusieurs calendriers ? Ou dû moins les calendriers que l'utilisateur à accès en mode partager

    Merci d'avance
  • User
    Rédacteur/Modérateur
    Bonjour,

    S'il s'agit de calendriers partagés avec plusieurs comptes de messagerie, alors il faut ajouter une colonne comptemessagerie dans les tables des calendriers et des rendezvous, et faire le lien entre les 2 tables sur les colonnes (idcalendrier,comptemessagerie). Il faut également modifier le code derrière.

    Cdlt,