Rappel Outlook via Excel MSOffice 2016
AuroreD67
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
Je souhaite faire un rappel dans Outlook via des dates de relance contenues dans un tableau Excel. J'ai repris une macro qui fonctionne parfaitement mais je souhaite la modifier : elle crée un rappel pour chaque cellule contenant une date -> Par exemple, J'ai 8 relances à faire le 1er août, elle me place 8 RDV dans Outlook. Ce que je veux faire : n'avoir qu'un RDV créé par date -> J'ai 8 relances à faire le 1er août, elle me crée un seul RDV "Relance".
Merci d'avance pour l'aide apportée !
N'hésitez pas si vous avez besoin de précisions.
Aurore
Pour info, le code :
Je souhaite faire un rappel dans Outlook via des dates de relance contenues dans un tableau Excel. J'ai repris une macro qui fonctionne parfaitement mais je souhaite la modifier : elle crée un rappel pour chaque cellule contenant une date -> Par exemple, J'ai 8 relances à faire le 1er août, elle me place 8 RDV dans Outlook. Ce que je veux faire : n'avoir qu'un RDV créé par date -> J'ai 8 relances à faire le 1er août, elle me crée un seul RDV "Relance".
Merci d'avance pour l'aide apportée !
N'hésitez pas si vous avez besoin de précisions.
Aurore
Pour info, le code :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim MaPlage As Range
'ici on détermine la plage dont les modifications déclencheront la procédure :
Set MaPlage = Range("M2:M500") '***** A ADAPTER ******
'si la cellule modifiée n'est pas dans notre plage on quitte la procédure sans rien faire
If Intersect(MaPlage, Target) Is Nothing Then Exit Sub
'sort également de la procédure si tu effaces le contenu d'une cellule date
If Target.Value = "" Then Exit Sub
'déclaration des variables
Dim strSujet As String, strDescription As String, strLocation As String, datDate As Date, IntDuree As Integer, strCategorie As String
'Attribution des valeurs aux variables
'il est possible de remplacer les valeurs "en dur" par des valeurs contenues dans les cellules
'pour cela, se baser sur Target (= la cellule date modifiée) et faire varier l'Offset pour cibler la bonne cellule
'dans cet exemple, Target est en colonne E.
'Pour cibler la cellule située en colonne A de la même ligne, il convient d'utiliser : Target.Offset(0, -4).Value
'Pour cibler la cellule située en colonne G de la même ligne, il convient d'utiliser : Target.Offset(0, 2).Value
strSujet = "Relance"
strDescription = "....Description...."
strLocation = ""
datDate = CDate(Target.Offset(0, 1).Value)
'petit test. Si ta cellule date ne contient pas l'heure, l'heure par défaut sera 08:00:00
'inutile de changer le format de la date, la saisir au format jj/mm/aaaa
If InStr(datDate, ":") = 0 Then datDate = CDate(datDate & " 08:00:00")
IntDuree = 30
strCategorie = "Travail"
'Appel de la procédure
Call NouveauRDV_Calendrier(strSujet, strDescription, strLocation, datDate, IntDuree, strCategorie)
End Sub
Sub NouveauRDV_Calendrier(Sujet As String, Description As String, Locat As String, maDate As Date, duree As Integer, Cat As String)
'Nécessite d'activer la référence "Microsoft Outlook xx.x Object Library"
Dim OkApp As New Outlook.Application
Dim Rdv As Outlook.AppointmentItem
Set Rdv = OkApp.CreateItem(olAppointmentItem)
With Rdv
.MeetingStatus = olMeeting
.Subject = Sujet
.Body = Description
.Location = Locat
.Start = maDate
.Duration = duree
.Categories = Cat
.Save
End With
Set OkApp = Nothing
End Sub
A voir également:
- Rappel Outlook via Excel MSOffice 2016
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
4 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
voilà, je suggère de remplacer
par
et d'ajouter ceci juste après tes autres lignes "Dim":
Call NouveauRDV_Calendrier(strSujet, strDescription, strLocation, datDate, IntDuree, strCategorie)
par
sadate = CLng(datDate) saligne = Target.Row trouve = False nlig = Cells(Rows.Count, "N").End(xlUp).Row For i = 2 To nlig If (CLng(CDate(Cells(i, "N"))) = sadate) And (i <> saligne) Then trouve = True Exit For End If Next i If trouve Then Call NouveauRDV_Calendrier(strSujet, strDescription, strLocation, datDate, IntDuree, strCategorie) End If
et d'ajouter ceci juste après tes autres lignes "Dim":
Dim nlig As Long, i As Long Dim sadate As Date Dim saligne As Long Dim trouve As Boolean
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonsoir, peux-tu préciser comment tu vas traiter les information spécifiques à chaque relance (strSujet, strDescription, strLocation, IntDuree, strCategorie), quand tu ne fais qu'une relance par jour?
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
il me semble que ta macro ne fait pas ce que tu décris: je pense qu'elle crée un rappel à chaque modification dans la colonne M. donc la macro n'a pas une vue d'ensemble de tous les rappels qu'elle va créer.
sur base de quoi souhaites-tu que la macro décide de créer le rappel ou pas?
souhaites-tu simplement que la macro mémorise les rappels crées depuis que le fichier excel est ouvert, pour ne pas créer deux fois le même rappel pendant que le fichier est ouvert?
sur base de quoi souhaites-tu que la macro décide de créer le rappel ou pas?
souhaites-tu simplement que la macro mémorise les rappels crées depuis que le fichier excel est ouvert, pour ne pas créer deux fois le même rappel pendant que le fichier est ouvert?
Effectivement, je l'ai prise sur CCM mais sans la modifier (ne sachant pas coder en VBA). En fait j'ai une colonne "date envoi" (colonne M) et une colonne "date relance" (colonne N) qui calcule automatiquement (date envoi + 30 jours). Il faudrait que la macro me fasse un rappel Outlook à partir de la colonne relance mais qu'une seule fois par date qui apparaît (comme dit précédemment, j'ai 8 relances à faire le 1er aout mais je veux qu'elle me mette qu'un seul rappel).
Après, comme j'ouvre et je ferme plusieurs fois mon fichier dans la journée, il faudrait que dès qu'une nouvelle date apparait dans la colonne relance (N) elle crée un rappel si cette date ne possède pas encore de rappel.
Je ne sais pas si je suis claire sur la demande, n'hésites pas si tu as besoin de plus d'infos ou de mon fichier pour exemple.
Merci pour ton aide en tout cas !
Après, comme j'ouvre et je ferme plusieurs fois mon fichier dans la journée, il faudrait que dès qu'une nouvelle date apparait dans la colonne relance (N) elle crée un rappel si cette date ne possède pas encore de rappel.
Je ne sais pas si je suis claire sur la demande, n'hésites pas si tu as besoin de plus d'infos ou de mon fichier pour exemple.
Merci pour ton aide en tout cas !
Bonjour,
Tu veux avec Outlook à tout prix ?
Tu peux demander à excel d'ouvrir le fichier aux dates-heures voulues.
A tester : https://mon-partage.fr/f/nGNKaKqX/
eric
Tu veux avec Outlook à tout prix ?
Tu peux demander à excel d'ouvrir le fichier aux dates-heures voulues.
A tester : https://mon-partage.fr/f/nGNKaKqX/
eric
Bonjour,
lorsque tu saisis une date (en M) excel enregistre le fait qu'il faut ouvrir le fichier à la date de relance (en N) à 8:00.
Aux jours dits il s'ouvre automatiquement s'il y a un rappel (même si l'heure ou la date sont dépassés car PC éteint) et t'affiche une boite de dialogue avec le nombre de relances du jour, son icone de la barre de tâches clignote s'il était déjà ouvert en arrière plan.
eric
lorsque tu saisis une date (en M) excel enregistre le fait qu'il faut ouvrir le fichier à la date de relance (en N) à 8:00.
Aux jours dits il s'ouvre automatiquement s'il y a un rappel (même si l'heure ou la date sont dépassés car PC éteint) et t'affiche une boite de dialogue avec le nombre de relances du jour, son icone de la barre de tâches clignote s'il était déjà ouvert en arrière plan.
eric
Après modif, il y aurait une erreur à ce niveau :
If (CLng(CDate(Cells(i, "N"))) = sadate) And (i <> saligne) Then
Avec l'erreur : "Run-time error '13': Type mismatch
remplace
par
PS : comme c'est pour le travail, je ne pourrai pas te donner plus d'infos avant Lundi ou même tester les modifs du code. Merci de ton aide et bon weekend !
il faut remplacer
par
bon week-end!
Merci, ça fonctionne pour la colonne N avec les dates calculées. Par contre, dès que je rentre plusieurs fois la même date (par exemple 10/07) dans la colonne d'envoi (donc deux relances au 10/08), la macro me crée toujours deux RDV..