Générer des rendez-vous outlook depuis Excel
Bonjour à tous,
Après avoir lu les différentes info de ce site et appris plein de chose j'ai réussi à créer une macro permettant de générer automatique des alertes dans mon outlook.
Le problème qui se pose est que une fois la macro lancée un oui apparait (jusque là tout va bien) sur la cellule à côté de la date or les dates peuvent être modifiées mais le "oui" reste tout de même.
Ainsi comment faire pour que si la date est changée dans la cellule alors le oui disparait ou pour éviter les doublons ?
Un grand merci d'avance pour votre aide.
Voici ma macro pour une meilleure compréhension de mon problème
Option Explicit
Sub AjoutRV()
Dim DLig As Long, Lig As Long
Dim OutObj As Outlook.Application
Dim OutAppt As Outlook.AppointmentItem
Dim DateRdv As Date, FlgRdv As Boolean
' CrŽer une instance d'Outlook
Set OutObj = CreateObject("outlook.application")
' Avec la feuille
With Sheets("vm out")
DLig = .Range("A" & Rows.Count).End(xlUp).Row
' Pour chaque ligne
For Lig = 2 To DLig
' VŽrifier si pas dŽjˆ fait
If .Range("D" & Lig) <> "" Then
' Si dŽjˆ fait, vŽrifier si le commentaire ˆ changŽ
If .Range("D" & Lig).Comment.Text <> .Range("C" & Lig).Value Then
FlgRdv = True
Else
FlgRdv = False
End If
Else
FlgRdv = True
End If
' Si le FLAG est ˆ vrai on crŽŽ le RDV
If FlgRdv Then
DateRdv = Range("B" & Lig)
Set OutAppt = OutObj.CreateItem(olAppointmentItem)
With OutAppt
.Subject = "Convoquer " & Sheets("vm out").Range("A" & Lig) & " pour " & Sheets("vm out").Range("C" & Lig)
.Start = DateRdv & " 08:00"
.Duration = 60
.ReminderSet = True
.Save
End With
' CrŽer le commentaire et inscrire Oui
On Error Resume Next
.Range("D" & Lig).Comment.Delete
.Range("D" & Lig).AddComment Text:=.Range("C" & Lig).Value
.Range("D" & Lig) = "Oui"
On Error GoTo 0
End If
Next Lig
End With
Set OutAppt = Nothing
End Sub
Bonsoir Harrybeefy,
Ce n'est pas quand la macro AjoutRV s'exécute qu'il faut le faire, mais quand l'utilisateur modifie l'heure du rendez-vous avec l'événement Worksheet_Change :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 And Target.Column = 1 Then ' Colonne A
Application.EnableEvents = False
Target.Offset(0, 1) = Empty ' Efface la cellule de droite de la cellule active (colonne B)
Application.EnableEvents = True
End If
End Sub
A mettre dans le module de la feuille et à adapter à ton besoin.
Ce que je ne comprend pas : si on change l'heure du rendez-vous, tu enregistres le nouveau dans Outlook, mais que fais-tu de l'ancien ? La logique voudrait que tu le supprimes ! Non ?