Créer une alerte dans le calendrier Outlook suivant le fichier Excel

Bonjour,

Petit nouveau sur le site, je ne suis pas doué avec le vba et d'après mes recherches c'est par macro que la résolution peut se faire.

Donc je souhaite de l'aide pour créer des alertes (un rappel) dans mon calendrier Outlook et celui de mon collègue quand une date arrive 40 jours avant les échéances.

Le rappel : le nom en (A) puis en fonction de la date en (b) à J 40 avant indique "sélection méd le xx/xx/xx et la même chose pour le nom et (C) "cap" le xx/xx/xx.

C'est très loin de mes compétences et j'ai faits des tentatives avec un fichier présent sur le forum mais je ne comprends pas.

J'aimerais aussi que si on modifie une date dans le fichier Excel, le rappel s'adapte a cette nouvelle date.

5test-cap.xlsx (12.19 Ko)

D'avance merci pour votre aide et pour votre temps.

Numéro13

Bonjour Numero23,

Voici une approche, mais je ne l'ai pas testé à mon niveau pour ne pas "polluer" mon Outlook. J'ai modifié le nom de la feuille.

Ce code ajoute une condition pour vérifier :

a) si la date de début (la date de la colonne B moins 40 jours) est exactement à 40 jours à partir d’aujourd’hui. Si c’est le cas, il crée un nouvel élément de calendrier dans Outlook avec une alerte. Le sujet de l’alerte comprend "Sélection MED, puis le nom de la colonne A et la date de la colonne B.

b) et pour les dates de la colonne C qui sont à 40 jours, avec le sujet de l’alerte comprend "CAP", puis le nom de la colonne A et la date de la colonne C.

Les alertes sont à 09:00 pour une durée de 60 minutes avec rappel 15 minutes avant l'heure. A vous de modifier si besoin

A tester

Sub CreerAlertesOutlook()
    Dim olApp As Object
    Dim olApt As Object
    Dim ws As Worksheet
    Dim i As Long
    Dim DerLigne As Long
    Dim startDate As Date
    Dim nom As String
    Dim dateStr As String

    ' Définir la feuille de calcul
    Set ws = ThisWorkbook.Sheets("RDV")

    ' Créer une nouvelle instance d'Outlook
    On Error Resume Next
    Set olApp = GetObject(, "Outlook.Application")
    If Err.Number <> 0 Then Set olApp = CreateObject("Outlook.Application")
    On Error GoTo 0

    ' Définir la dernière ligne non vide de la colonne A
    DerLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' Parcourir chaque ligne dans la plage à partir de la ligne 6
    For i = 6 To DerLigne
        ' Obtenir le nom de la colonne A
        nom = ws.Cells(i, "A").Value

        ' Obtenir la date de début à partir de la colonne B et soustraire 40 jours
        startDate = ws.Cells(i, "B").Value - 40
        ' Vérifier si la date de début est exactement à 40 jours à partir d'aujourd'hui
        If startDate = Date + 40 Then
            ' Créer un nouvel élément de calendrier
            Set olApt = olApp.CreateItem(1) ' 1 = olAppointmentItem
            With olApt
                .Start = startDate + TimeValue("09:00:00") ' Définir l'heure de début
                .Duration = 60 ' Durée en minutes
                .Subject = "Sélection MED pour " & nom ' Sujet de l'alerte
                .ReminderMinutesBeforeStart = 15 ' Rappel 15 minutes avant le début
                .Save ' Enregistrer l'élément de calendrier
            End With
        End If

        ' Obtenir la date de la colonne C et soustraire 40 jours
        startDate = ws.Cells(i, "C").Value - 40
        ' Vérifier si la date de début est exactement à 40 jours à partir d'aujourd'hui
        If startDate = Date + 40 Then
            ' Créer un nouvel élément de calendrier
            Set olApt = olApp.CreateItem(1) ' 1 = olAppointmentItem
            With olApt
                .Start = startDate + TimeValue("09:00:00") ' Définir l'heure de début
                .Duration = 60 ' Durée en minutes
                .Subject = "CAP pour " & nom ' Sujet de l'alerte
                .ReminderMinutesBeforeStart = 15 ' Rappel 15 minutes avant le début
                .Save ' Enregistrer l'élément de calendrier
            End With
        End If
    Next i

    ' Nettoyer
    Set olApt = Nothing
    Set olApp = Nothing
End Sub

Bonjour,

Donc j'ai renommé ma feuille "RDV" et introduit le code et enregistré.

J'ai modifié des dates dans le fichier Excel et heures dans le vba pour avoir le rappel afin de faire des tests mais aucun rappel.

Faut-il mettre mon adresse mail ? Le fichier Excel doit-il être ouvert ou il peut être fermé?

Merci pour l'aide

Voici le code corrigé et testé à mon niveau

Sub CreerAlertesOutlook4()
    Dim olApp As Object
    Dim olApt As Object
    Dim ws As Worksheet
    Dim i As Long
    Dim DerLigne As Long
    Dim startDate As Date
    Dim nom As String

    ' Définir la feuille de calcul
    Set ws = ThisWorkbook.Sheets("RDV")

    ' Créer une nouvelle instance d'Outlook
    On Error Resume Next
    Set olApp = GetObject(, "Outlook.Application")
    If Err.Number <> 0 Then Set olApp = CreateObject("Outlook.Application")
    On Error GoTo 0

    ' Définir la dernière ligne non vide de la colonne A
    DerLigne = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' Parcourir chaque ligne dans la plage à partir de la ligne 6
    For i = 6 To DerLigne
        ' Obtenir le nom de la colonne A
        nom = ws.Cells(i, "A").Value

        ' Obtenir la date de début à partir de la colonne B et soustraire 40 jours
        startDate = ws.Cells(i, "B").Value - 40
        ' Vérifier si la date de début est exactement aujourd'hui
        If DateValue(startDate) = DateValue(Date) Then
            ' Créer un nouvel élément de calendrier
            Set olApt = olApp.CreateItem(1) ' 1 = olAppointmentItem
            With olApt
                .Start = startDate + TimeValue("09:00:00") ' Définir l'heure de début
                .Duration = 60 ' Durée en minutes
                .Subject = "Sélection MED pour " & nom ' Sujet de l'alerte
                .ReminderMinutesBeforeStart = 15 ' Rappel 15 minutes avant le début
                .Save ' Enregistrer l'élément de calendrier
            End With
        End If

        ' Obtenir la date de la colonne C et soustraire 40 jours
        startDate = ws.Cells(i, "C").Value - 40
        ' Vérifier si la date de début est exactement aujourd'hui
        If DateValue(startDate) = DateValue(Date) Then
            ' Créer un nouvel élément de calendrier
            Set olApt = olApp.CreateItem(1) ' 1 = olAppointmentItem
            With olApt
                .Start = startDate + TimeValue("09:00:00") ' Définir l'heure de début
                .Duration = 60 ' Durée en minutes
                .Subject = "CAP pour " & nom ' Sujet de l'alerte
                .ReminderMinutesBeforeStart = 15 ' Rappel 15 minutes avant le début
                .Save ' Enregistrer l'élément de calendrier
            End With
        End If
    Next i

    ' Nettoyer
    Set olApt = Nothing
    Set olApp = Nothing
End Sub

Bonjour,

Super merci c'est cela qu'il me faut. J'abuse mais y a t'il moyen d'avoir avec le nom apparaitre la date :

Subject = "Sélection MED pour " & nom ' + date en colonne B Sujet de l'alerte.

En tout cas chapeau pour ton travail.

N13

Bonjour N13

Modifier ces lignes pour lire

.Subject = "Sélection MED pour " & nom & " " & ws.Cells(i, "B") 
.Subject = "CAP pour " & nom ' Sujet de l'alerte & " " & ws.Cells(i, "C")
Rechercher des sujets similaires à "creer alerte calendrier outlook suivant fichier"