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 !!

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 Sub

Bonjour 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 !

reference vba message d erreur
56test-forumexcel.xlsm (167.96 Ko)

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 Sub

Bonjour 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 !

message rappel tache2 0
64test-forumexcel.xlsm (169.58 Ko)

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âche

Bonsoir 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 !

Rechercher des sujets similaires à "creation tache outlook via"