Création d’une tâche Outlook via Excel
Bonjour à vous,
Je ne suis pas un professionnel du code et donc de VBA, d’où ma demande d’aide !
J’ai effectué un planning sur excel de mes projets avec les interventions et différentes tâches planifiés et je souhaiterai à J-7 du commencement de chaque intervention et tâche, créer une alerte Outlook.
J’écris ce poste via mon téléphone, je ne peux donc vous joindre mon fichier mais je peux vous dire où se situe mes cases ayant les informations que je voudrai mettre dans l’alerte.
Cellules B6:B35 : dates de chaque tâches
Cellules C6:C35 : Intitulé de chaque interventions/tâches
Cellules G6:G35 : type de tâche (intervention, facturation ...)
Je peux vous joindre mon fichier si besoin quand je serai sur mon ordinateur !
Merci pour votre aide !!
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
ci-dessous exemple de code (avec ajout d'un commentaire pour ne pas recréer les tâches une deuxième fois) :
Option Explicit
Sub créa_tâche()
Dim i As Integer
Dim date_tâche As Range, lib_tâche As Range, type_tâche As Range
Dim olApp As Object, tâche As Object
Dim périodicité As Object
Dim destinataire As String
destinataire = "xxxxxxxx@yyyyyyy.zzz"
Set olApp = CreateObject("Outlook.Application")
For i = 6 To 35
'-- affectation des champs
Set lib_tâche = Cells(i, "C")
Set date_tâche = Cells(i, "B")
Set type_tâche = Cells(i, "G")
'-- génération d'une tâche selon conditions
If lib_tâche.Value <> Empty _
And IsDate(date_tâche.Value) _
And lib_tâche.Comment Is Nothing Then
'-- génération tâche avec rappel
Set tâche = olApp.CreateItem(3)
With tâche
.Assign
.Recipients.Add destinataire
.Subject = type_tâche
.Body = lib_tâche
.StartDate = date_tâche.Value 'date début de la tâche
.DueDate = DateAdd("ww", 1, .StartDate) 'échéance = date de début + 1 semaine
.Status = 1 '0 = non démarré, 1 = en cours, 2 = terminé, 3 = en attente, 4 = différé
'.DateCompleted 'date de fin force status à 2
.Importance = 1 '0 = basse, 1 = normal, 2 = haute
'.contactNames
.ReminderSet = True 'activation rappel
.ReminderTime = .StartDate - 7 + TimeValue("9:00AM") 'date de rappel si activé
Set périodicité = .GetRecurrencePattern() 'récurrence tâche par défaut toutes les semaines
périodicité.NoEndDate = False 'fin de la tâche après répétitions
périodicité.Occurrences = 1 'nombre de répétitions de la tâche
.Save
.Send
End With
'-- ajout commentaire date de création de la tâche
lib_tâche.AddComment "tâche crée le " & Date
End If
Next i
Set olApp = Nothing
End SubBonjour Thev,
merci pour ton code, j'ai copier coller ton code mais lors de l’exécution de celui-ci j'ai le message d'erreur 429 qui apparaît , comme beaucoup d'autre code que j'ai essayé ...
J'ai regardé mes références et pourtant je pense avoir les bonnes (voir PJ)
J'ai ajouté 2 colonnes pour incrémenter l'heure de début et l'heure de fin (pas besoin de faire remonter ses informations dans la tâche Outlook)
Vous trouverez en PJ aussi le fichier excel ! (j'ai mis en rouge les colonnes comportant les informations que je voudrai faire remonter via une tâche sur Outlook)
Merci pour ta réponse rapide !
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Bonjour,
Pas d'erreur chez moi.
C'est curieux que vous ayez une erreur lors de la création d'une instance de l'application Office Outlook 2016
Set olApp = CreateObject("Outlook.Application")(liaison dite tardive)
D'autant plus que la bibliothèque correspondante est présente dans vos références. Du coup, vous pouvez essayer :
Set olApp = Outlook.Application(liaison dite anticipée)
Si ça ne fonctionne pas, vous avez un problème avec votre application Office Outlook 2016.
Par ailleurs, si la création des tâches ne concerne que vous, vous pouvez simplifier le code ainsi
Sub créa_tâche()
Dim i As Integer
Dim date_tâche As Range, lib_tâche As Range, type_tâche As Range
Dim olApp As Object, tâche As Object
Dim périodicité As Object
Dim destinataire As String
Set olApp = Outlook.Application
For i = 6 To 35
'-- affectation des champs
Set lib_tâche = Cells(i, "C")
Set date_tâche = Cells(i, "B")
Set type_tâche = Cells(i, "G")
'-- génération d'une tâche selon conditions
If lib_tâche.Value <> Empty _
And IsDate(date_tâche.Value) _
And lib_tâche.Comment Is Nothing Then
'-- génération tâche avec rappel
Set tâche = olApp.CreateItem(3)
With tâche
.Subject = type_tâche
.Body = lib_tâche
.StartDate = date_tâche.Value 'date début de la tâche
.DueDate = DateAdd("ww", 1, .StartDate) 'échéance = date de début + 1 semaine
.Status = 1 '0 = non démarré, 1 = en cours, 2 = terminé, 3 = en attente, 4 = différé
'.DateCompleted 'date de fin force status à 2
.Importance = 1 '0 = basse, 1 = normal, 2 = haute
'.contactNames
.ReminderSet = True 'activation rappel
.ReminderTime = .StartDate - 7 + TimeValue("9:00AM") 'date de rappel si activé
Set périodicité = .GetRecurrencePattern() 'récurrence tâche par défaut toutes les semaines
périodicité.NoEndDate = False 'fin de la tâche après répétitions
périodicité.Occurrences = 1 'nombre de répétitions de la tâche
.Save
End With
'-- ajout commentaire date de création de la tâche
lib_tâche.AddComment "tâche crée le " & Date
End If
Next i
Set olApp = Nothing
End SubBonjour Thev,
Alors effectivement, l'erreur est dû au "Set olApp = CreateObject("Outlook.Application")" , en le remplaçant par "Set olApp = Outlook.Application" ça marche !
Merci Thev !
Par contre j'ai un petit soucis, par exemple, vous regarderez dans l'excel en PJ, j'ai mis une date d'intervention au 20 mars par exemple, je reçois bien la tâche (voir PJ) mais datée du 27 Mars et non du 20 mars, j'ai donc 7 jours de décalage !
Je me suis rendu compte (voir PJ) que la date du 27 Mars correspond à une "date de fin".
Après l’intitulé du rappel c'est "intervention" donc le "type" dans mon excel, est-ce possible d'incrémenter aussi la colonne C soit le "libellé" dans le sujet du rappel ? Tout en laissant laisser dans le corps le libellé de la tâche comme c'est le cas déjà.
Merci à vous, vous mettes d'une grande aide !
- Messages
- 4'199
- Excel
- 2021 FR 64 bits
- Inscrit
- 13/06/2016
- Emploi
- bénévole associations Goutte d'Or
Après l’intitulé du rappel c'est "intervention" donc le "type" dans mon excel, est-ce possible d'incrémenter aussi la colonne C soit le "libellé" dans le sujet du rappel ? Tout en laissant laisser dans le corps le libellé de la tâche comme c'est le cas déjà.
L'objet du rappel est le même que celui de la tâche.
Il faut donc corriger le code ainsi
With tâche
.Subject = lib_tâche
.Body = type_tâche & " " & lib_tâcheBonsoir Thev,
Merci !!
Petites dernières questions :
Par contre j'ai un petit soucis, par exemple, vous regarderez dans l'excel en PJ, j'ai mis une date d'intervention au 20 mars par exemple, je reçois bien la tâche (voir PJ) mais datée du 27 Mars et non du 20 mars, j'ai donc 7 jours de décalage !
Je me suis rendu compte (voir PJ) que la date du 27 Mars correspond à une "date de fin".
Il y a t'il moyen de de voir apparaître que la date de début soit la date sur mon fichier excel ?
La dernière question :
Si mon fichier excel est fermé, est-ce que je reçois les tâches ou faut-il que le fichier soit ouvert ?
merci à vous !