Macro outlook

Bonsoir

Nouveau sur ce forum, merci d’avance de votre accueil. J’ai beaucoup cherché sur la toile et j’ai beaucoup trouvé aussi, mais le fait d’être débutant fait que je n’arrive pas en m’en sortir avec tous les exemples de macro trouver.

Voici donc mon problème : j’essaie de faire une macro qui va créer une tache (rappel) dans Outlook à une date mis dans une colonne (F). La macro fonctionne mais si j’ai plusieurs mêmes dates dans ma colonne, je me retrouve qu’avec une seule alerte !

J’aimerais aussi que ce soit un envoi dès que la date du jour soit dépassé car j’ai remarqué que l’envoie fonctionne que jour -1.

J'aimerais aussi mettre le texte de la colonne (A) a la place de "Alerte".

Voici ma macro

Sub Send_Tache_Outlook()

Dim MyOut As New Outlook.Application

Dim MyTassk As TaskItem

Set MyTask = MyOut.CreateItem(olTaskItem)

Dlg = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row

For R = 4 To 41

If UCase(Sheets("Feuil1").Cells(R, 8)) <> "X" And Sheets("Feuil1").Cells(R, 6) = Date - 1 Then

With MyTask

.Subject = "Alerte"

.Body = "Le décompte envoyé le " & Sheets("Feuil1").Cells(R, 6) & "Pour la maintenance effectuée sur la commune de " & Sheets("Feuil1").Cells(R, 1) & " n'a toujours pas été validé par le client, merci de faire une relance"

End With

Set outapp = Nothing

Sheets("Feuil1").Cells(R, 8) = "X" 'Mise du X en colonne H

End If

Next

MyTask.Save

End Sub

Je vous remercies d'avance.

Xavier

Bonsoir

Dite moi si réalisable ou pas ?

Je me suis peut être pas très bien expliqué ? j'en suis désolé !

CDT

Xavier

Bonjour

Peux tu mettre ton fichier stp.

Je vais regarder.

Cdt,

Bonsoir

Merci beaucoup de vouloir m'aider. Je joint mon fichier qui n'est pas encore fini.

CDT

Xavier

xshbl a écrit :

Bonsoir

Merci beaucoup de vouloir m'aider. Je joint mon fichier qui n'est pas encore fini.

CDT

Xavier

peux tu tester ce code?

Sub Send_Tache_Outlook()
Dim MyOut As New Outlook.Application
Dim MyTassk As TaskItem
Set MyTask = MyOut.CreateItem(olTaskItem)
Dim debut

Dlg = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
der_lign = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row

'Definition à la main de ton début
debut = 4

'on parcours chaque ligne de la colonne A
For Each c In Sheets("Feuil1").Range("A" & debut & ":A" & der_lign)

'on s'assure que la donnée n'est pas vide + colonne H différente de X
If c <> "" And c.Offset(0, 7) <> "X" And c.Offset(0, 5) = Date - 1 Then

            With MyTask
             .Subject = "Alerte"
             .Body = "Le décompte envoyé le " & c.Offset(0, 4) & _
             " pour la maintenance effectuée sur la commune de " & c & _
             " n'a toujours pas été validé par le client, merci de faire une relance"
            End With

'mise a X de la colonne H
c.Offset(0, 7) = "X"
MyTask.Save
Set outpp = Nothing
End If

Next

End Sub

Bonsoir ti_chou_3

Tout dabord merci de m'aider. Je viens d'essayer ton code mais rien ne se passe, pas de tache sur Outlook, pas de "x" dans la colonne "H" ?!

J'ai donc essayé avec mon ancien code et cela fonctionne mais avec bien-sur tous les défauts.

Encore merci

CDT

Xavier

xshbl a écrit :

Bonsoir ti_chou_3

Tout dabord merci de m'aider. Je viens d'essayer ton code mais rien ne se passe, pas de tache sur Outlook, pas de "x" dans la colonne "H" ?!

J'ai donc essayé avec mon ancien code et cela fonctionne mais avec bien-sur tous les défauts.

Encore merci

CDT

Xavier

Bonsoir

La date de rappel est elle a jour -1?

Quelle est la condition si date rappel est jour -1 alors rappel est ce bien cela?

Pour tes deux premieres lignes mets la date d hier et execute la requete

Cdt,

Re

Désolé il fallait vraiment que je commence à la ligne 4, par contre si je rentre plusieurs dates (-1 du jour) en colonne F, il me met bien un "x" en face (colonne H) mais je reçois qu'une seule tache sur Outlook.

Merci

CDT

Xavier

xshbl a écrit :

Re

Désolé il fallait vraiment que je commence à la ligne 4, par contre si je rentre plusieurs dates (-1 du jour) en colonne F, il me met bien un "x" en face (colonne H) mais je reçois qu'une seule tache sur Outlook.

Merci

CDT

Xavier

C'est bon j'ai oublié de placer la création de l'item de tache dans ma boucle

ps j'ai aussi mis comme nom de tache Tache: + nom de la tache c'est plus visuel

Sub Send_Tache_Outlook()
Dim MyOut As New Outlook.Application
Dim MyTassk As TaskItem
Dim debut

Dlg = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
der_lign = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row

'Definition à la main de ton début
debut = 4

'on parcours chaque ligne de la colonne A
For Each c In Sheets("Feuil1").Range("A" & debut & ":A" & der_lign)

'on s'assure que la donnée n'est pas vide + colonne H différente de X
If c <> "" And c.Offset(0, 7) <> "X" And c.Offset(0, 5) = Date - 1 Then
'creation de tache imbrique dans boucle
Set mytask = MyOut.CreateItem(olTaskItem)
            With mytask
             .Subject = "Alerte" & " : " & c
             .Body = "Le décompte envoyé le " & c.Offset(0, 4) & _
             "Pour la maintenance effectuée sur la commune de " & c & _
             " n'a toujours pas été validé par le client, merci de faire une relance"
             .Save
            End With

'mise a X de la colonne H
c.Offset(0, 7) = "X"
'mise a zero de mytask
Set mytask = Nothing

End If

Next

End Sub

Super, vraiment merci, ça fonctionne très bien……..cool

D’après vous peut on mettre le texte de la colonne A à la place de "alerte" mis dans la macro et peut on facilement créer les taches a une date quelconque inférieures à la date du jour en remplacement à date -1 ?

Si trop de bouleau alors juste cette macro me ravis

Encore merci

Xavier

xshbl a écrit :

Super, vraiment merci, ça fonctionne très bien……..cool

D’après vous peut on mettre le texte de la colonne A à la place de "alerte" mis dans la macro et peut on facilement créer les taches a une date quelconque inférieures à la date du jour en remplacement à date -1 ?

Si trop de bouleau alors juste cette macro me ravis

Encore merci

Xavier

alors pour remplacer alerte par la colonne a

.Subject = c

et peut on facilement créer les taches a une date quelconque inférieures à la date du jour en remplacement à date -1 ? ???

Pourriez vous me donner plus de détails?

cdt,

ok merci je vais essayer pour la colonne A.

Oui je m’explique très mal, désolé

En fait dans mon tableau j’ai une dates début de session colonne E rangée 4 et à partir de cette date mon tableau m, envoie les taches a faires à tel date (donc toujours inférieure a la date de départ (colonne E Rangée 4).

Je suis pas certain de vous avoir bien expliqué ......

xshbl a écrit :

ok merci je vais essayer pour la colonne A.

Oui je m’explique très mal, désolé

En fait dans mon tableau j’ai une dates début de session colonne E rangée 4 et à partir de cette date mon tableau m, envoie les taches a faires à tel date (donc toujours inférieure a la date de départ (colonne E Rangée 4).

Je suis pas certain de vous avoir bien expliqué ......

on donc une alerte est à créer a l approche de cette date en colonne E est-ce bien cela?

Une alerte de date fixe? -4 jours, -5 jours ? ou qu'on paramètre quelque part sur excel dans une feuille paramétrage par exemple

cdt,

Bonjour

Non vous avez raison c'est bien à l'approche de la date -1. Donc votre code est parfait. merci

En fait ce fichier va me servir de pense bete. Je vais le faire ouvrir automatiquement avec Windows. Peut on faire demarrer la macro à l'ouverture du fichier ?

Peut on refermer le fichier automatiquement ?

Peut on travailler dans l'autre sens => mettre un "X" en colonne "I" lorsque l'on a effectué une tache ?

Merci pour votre patience

Xavier

xshbl a écrit :

Bonjour

Non vous avez raison c'est bien à l'approche de la date -1. Donc votre code est parfait. merci

En fait ce fichier va me servir de pense bete. Je vais le faire ouvrir automatiquement avec Windows. Peut on faire demarrer la macro à l'ouverture du fichier ?

Peut on refermer le fichier automatiquement ?

Peut on travailler dans l'autre sens => mettre un "X" en colonne "I" lorsque l'on a effectué une tache ?

Merci pour votre patience

Xavier

Bonsoir

Oui pr l execution a ouverture & changement a I. Collez le code et toutes les modifs sont la.

Sub workbook_open()
Dim MyOut As New Outlook.Application
Dim MyTassk As TaskItem
Dim debut

Dlg = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
der_lign = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row

'Definition à la main de ton début
debut = 4

'on parcours chaque ligne de la colonne A
For Each c In Sheets("Feuil1").Range("A" & debut & ":A" & der_lign)

'on s'assure que la donnée n'est pas vide + colonne H différente de I
If c <> "" And c.Offset(0, 7) <> "I" And c.Offset(0, 5) = Date - 1 Then
'creation de tache imbrique dans boucle
Set mytask = MyOut.CreateItem(olTaskItem)
            With mytask
             .Subject = c
             .Body = "Le décompte envoyé le " & c.Offset(0, 4) & _
             " pour la maintenance effectuée sur la commune de " & c & _
             " n'a toujours pas été validé par le client, merci de faire une relance"
             .Save
            End With

'mise a I de la colonne H
c.Offset(0, 7) = "I"
'mise a zero de mytask
Set mytask = Nothing

End If

Next

End Sub

 

Bonsoir ti_chou_3

Merci beaucoup pour votre nouveau code et surtout de continuer sur mon sujet.

En fait je me suis très mal expliqué, je voulais savoir si on pouvait travailler à l'envers, c'est a dire de Outlook vers le fichier Excel ?

Grace à votre macro je génère des taches (rappel) dans Outlook et j'ai une croix dans la colonne H pour m'indiquer que le rappel à bien était effectuer. Une fois la tache effectuée, lorsque je clic sur le drapeau rouge d'Outlook pour la supprimer, peut on créer une crois en colonne I par exemple ?

Le dernier code que vous avez posté ne se lance pas à l'ouverture ?!

La macro à ce jour me convient vraiment et encore merci, la demande du lancement à l'ouverture et du travail à l'envers reste du suppléant, donc si vous en avait marre ...........

CDT

Xavier

xshbl a écrit :

Bonsoir ti_chou_3

Merci beaucoup pour votre nouveau code et surtout de continuer sur mon sujet.

En fait je me suis très mal expliqué, je voulais savoir si on pouvait travailler à l'envers, c'est a dire de Outlook vers le fichier Excel ?

Grace à votre macro je génère des taches (rappel) dans Outlook et j'ai une croix dans la colonne H pour m'indiquer que le rappel à bien était effectuer. Une fois la tache effectuée, lorsque je clic sur le drapeau rouge d'Outlook pour la supprimer, peut on créer une crois en colonne I par exemple ?

Le dernier code que vous avez posté ne se lance pas à l'ouverture ?!

La macro à ce jour me convient vraiment et encore merci, la demande du lancement à l'ouverture et du travail à l'envers reste du suppléant, donc si vous en avait marre ...........

CDT

Xavier

Bonsoir

Point 1:

L'appelation de la macro workbook_open fait qu'elle se déclenche au démarrage.

Si vous avez un doute

placez un msgbox, msgbox "TEST", rien de plus simple comme test.

La macro a-t-elle été placée dans this workbook?

Point2:

Oula.. cela présume non plus de faire une macro excel mais placer une macro dans outlook.

C'est un peu hardos j'ai jamais testé ...

PAr contre je peux regarder pour chaque ligne ayant un X si un rendez vous outlook existe selon nom tache on laisse si n'existe plus on met un X dans la colonne OUI

Ps : mon dernier code il faut modifier les "I" par des "X" donc !

Cdt,

re

Je viens de contrôler la macro se trouve dans thisworkbook et dans module1 !?

Je suis trop novice, je n'est pas compris la solution pour tester le démarrage de la macro : "placez un msgbox, msgbox "TEST", rien de plus simple comme test".

Je suis preneur de votre solution en se qui concerne votre solution de contrôle des X

Vraiment merci

Xavier

xshbl a écrit :

re

Je viens de contrôler la macro se trouve dans thisworkbook et dans module1 !?

Je suis trop novice, je n'est pas compris la solution pour tester le démarrage de la macro : "placez un msgbox, msgbox "TEST", rien de plus simple comme test".

Je suis preneur de votre solution en se qui concerne votre solution de contrôle des X

Vraiment merci

Xavier

Et la voici la solution, je viens de la finir :

voila le code :

    Sub workbook_open()
    MsgBox " Lancement de la macro !"
    Dim MyOut As New Outlook.Application
    Dim MyTassk As TaskItem
    Dim debut
    Dim Ol_App As New Outlook.Application
    Dim Ol_Mapi As Outlook.Namespace
    Dim Ol_Items As Outlook.Items
    Dim Ol_Item As Outlook.TaskItem

    Set Ol_Mapi = Ol_App.GetNamespace("MAPI")
    Set Ol_Items = Ol_Mapi.GetDefaultFolder(olFolderTasks).Items

    Dlg = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
    der_lign = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row

    'Definition à la main de ton début
    debut = 4

        'analyse tâches inscrites sur outlook mais deja réalisés

        For Each c In Sheets("Feuil1").Range("A" & debut & ":A" & der_lign)

            If c.Offset(0, 7) = "X" Then 'tache envoyée sur outlook
                    i = 0
                    For Each Ol_Item In Ol_Items

                        If Ol_Item.Subject = c Then ' si el nom du rappel est une des lignes envoyées à Outlook alors
                        GoTo Passe2                 'on ne fait rien si le rappel existe toujours
                        End If
                    i = i + 1
                    Next Ol_Item

                    If i = Ol_Items.Count Then
                    c.Offset(0, 8) = "X"  'on passe la colonne I à X car envoi deja fait - si on passe par la c'est que le rendez vous n'existe plus
                    End If

            End If
        Next

Passe2:
    'on parcours chaque ligne de la colonne A
    For Each c In Sheets("Feuil1").Range("A" & debut & ":A" & der_lign)

    'on s'assure que la donnée n'est pas vide + colonne H différente de I
    If c <> "" And c.Offset(0, 7) <> "X" And c.Offset(0, 5) = Date - 1 Then
    'creation de tache imbrique dans boucle
    Set mytask = MyOut.CreateItem(olTaskItem)
                With mytask
                 .Subject = c
                 .Body = "Le décompte envoyé le " & c.Offset(0, 4) & _
                 " pour la maintenance effectuée sur la commune de " & c & _
                 " n'a toujours pas été validé par le client, merci de faire une relance"
                 .Save
                End With

    'mise a I de la colonne H
    c.Offset(0, 7) = "X"
    'mise a zero de mytask
    Set mytask = Nothing

    End If

    Next

Set Ol_Item = Nothing
Set Ol_Items = Nothing
Set Ol_Mapi = Nothing
Set Ol_App = Nothing

Copiez ce code

coller le dans this workbook

supprimer ce qu'il y a dans module 1

Je viens de tester de mon côté c'est bon

Je suis vraiment désolé mais a l'ouverture du fichier j'ai une erreur d,execution 2147417851 la methode subject de l'objet taskitem à echoué.

Et j'ai la ligne : .Subject = c surlignée en jaune

Xavier


et si je laisse le fichier ouvert et que je lance la macro manuellement j'ai " erreur automation Le serveur à généré une exception

Rechercher des sujets similaires à "macro outlook"