Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Rédacteur/Modérateur

    [Article] Conception d'un outil de mise à jour des rendez-vous entre Access et Outlook
    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,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information en abondance, plein de bonnes choses à consulter sans modération

    Comprendre les choses par soi-même c'est bien sympa

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  2. #2
    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 :Sélectionner tout -Visualiser dans une fenêtre à part
    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

  3. #3
    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,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information en abondance, plein de bonnes choses à consulter sans modération

    Comprendre les choses par soi-même c'est bien sympa

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

###raw>template_hook.ano_emploi###