Macro outlook

xshbl a écrit :

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

essayer ce fichier

ps: outlook est bien lancé ?


ti_chou_3 a écrit :
xshbl a écrit :

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

essayer ce fichier

ps: outlook est bien lancé ?

c'est le .subject de quel boucle qui est surligné?


xshbl a écrit :

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

tester juste ce code et dites moi si ca passe :

Sub workbook_open()
    MsgBox " Lancement de la macro !"
    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

        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

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

    End Sub

oui Outlook ouvert

J'ai la même erreur : subject.......

d'apres la derniere macro lorsque je la lance j'ai une erreur de compilation étiquette non définie

xshbl a écrit :

oui Outlook ouvert

J'ai la même erreur : subject.......

dites moi si vous avez :

allez dans visual basic > outils > references

les memes references que moi

Microsoft Excel 14,0 object library

Microsoft outlook 14.0 object library

si non activez les

cdt,

J vous joint les ref

ref
xshbl a écrit :

J vous joint les ref

allez sur VB , sur le code faites F8 F8 ca execute pas à pas je voudrais savoir a quel endroit il plante.

cdt,

Peux tu me dire si la macro sur le fichier joint marche chez toi

cdt,

20classeur1.xlsm (18.40 Ko)

Bonjour

Désolé mais hier, il a fallu que je reparte.

Je joint une capture d'image sur l'erreur lorsque je fait F8.

J'ai essayé le dernier fichier, lorsque je clic sur le bouton rien ne se passe et pas d'erreur !

Merci

cdt

Xavier

xshbl a écrit :

Bonjour

Désolé mais hier, il a fallu que je reparte.

Je joint une capture d'image sur l'erreur lorsque je fait F8.

J'ai essayé le dernier fichier, lorsque je clic sur le bouton rien ne se passe et pas d'erreur !

Merci

cdt

Xavier

ok aviez vous des taches crees?

Merci de creer deux taches sur outlook puis relancer le dernier fichier

cdt,

Re

J'ai crée deux taches dans Outlook une à la dte d'aujourd'hui et l'autre à demain. Lorsque je clic sur le bouton du fichier rien ne se passe.

cdt

xshbl a écrit :

Re

J'ai crée deux taches dans Outlook une à la dte d'aujourd'hui et l'autre à demain. Lorsque je clic sur le bouton du fichier rien ne se passe.

cdt

bizarre je jetterai un oeil ce soir

    Sub workbook_open()
    MsgBox " Lancement de la macro !"
    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

    Set mytask2 = MyOut.GetNamespace("MAPI").GetDefaultFolder(olFolderTasks).Items

    For Each MyTassk In mytask2
    MsgBox MyTassk
    Next

    End Sub

bonsoir

Merci de tester ce code en ayant des taches crées

cdt,

Bonsoir Ti_chou_3

Désolé hier j'était malade ,je suis tombé à 21h00.

J'ai essayé ton dernier code, j'ai une fenêtre qui s'ouvre avec "lancement de la macro" puis une fenêtre qui reprend le titre de ma tache, une autre pour la deuxième tache mais une fois fini, je n'ai rien d'affiché ! Ca c'est avec le pc de mon boulot.

Chez moi, j'ai "lancement de la macro" puis "incompatibilité de type" je pense que cela est du au fait que j'ai configuré Outlook pour gmail !

En se qui concerne reprendre les taches de Outlook vers le fichier, pas grave , ne vous prenez pas la tête...... en tout cas c'est très sympas.

cdt

Xavier

xshbl a écrit :

Bonsoir Ti_chou_3

Désolé hier j'était malade ,je suis tombé à 21h00.

J'ai essayé ton dernier code, j'ai une fenêtre qui s'ouvre avec "lancement de la macro" puis une fenêtre qui reprend le titre de ma tache, une autre pour la deuxième tache mais une fois fini, je n'ai rien d'affiché ! Ca c'est avec le pc de mon boulot.

Chez moi, j'ai "lancement de la macro" puis "incompatibilité de type" je pense que cela est du au fait que j'ai configuré Outlook pour gmail !

En se qui concerne reprendre les taches de Outlook vers le fichier, pas grave , ne vous prenez pas la tête...... en tout cas c'est très sympas.

cdt

Xavier

C est normal le but etait de tester la recup de vos taches.

Peux tu tester le code avc ton pc de boulot ou je t indiquais que c etait bon.

A tester mettre date ds echeance a hier

regarder si tache se creee

regarder si x se met

supprimer tache

regarder si second x apparait

Celui ci

    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

End sub

Re bonsoir

Je viens d’essayer, la création des taches à la date d’hier est ok, par contre rien lorsque je l’aient supprimes !

cdt


Ha ! oui une question.

La macro doit être dans module 1 ou thisworkbook

elle se nome bien : send_tache_outlook

Bonsoir

Comme discuté avec toi je suis passé par une fonction pour tester si la tache existe ou non.

Voici le code complet et fonctionnel :

      Public Sub workbook_open()
        'MsgBox " Lancement de la macro !"
        Dim MyOut As New Outlook.Application
        Dim MyTassk As TaskItem
    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

       'Plage alerte des échéances ( on fait un >= à date jour - cet intervalle )
       intervalle_alerte = 7

            '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" And c.Offset(0, 8) <> "X" Then
             'MsgBox c
             'MsgBox message
             message = ""
                Call existe_tache(c, message) 'appel de la fonction qui checke si la tache existe
                If message = "Deleted" 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
             'MsgBox message
             End If

            Next

        '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 - intervalle_alerte 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

    End Sub

Public Function existe_tache(c, message) ' Fonction qui checke l'existence de la tache dans les elements excels de la colonne a
'Dim c, message

           Dim MyOut As New Outlook.Application
        Dim MyTassk As TaskItem
    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

message = ""

If Ol_Items.Count = 0 Then
'si plus aucun message alors inutile de comparer :-) -- tout est deleted par raisonnement
Message = "Deleted"
GoTo fin:
End If
'MsgBox Ol_Item.Count

For Each Ol_Item In Ol_Items

If c = Ol_Item.Subject Then
sujet = Ol_Item.Subject
Else
sujet = ""
End If

If sujet = c Then
message = "not deleted"
GoTo fin
Else
message = "Deleted"
End If

Next

fin:
  End Function

Bonsoir Ti_chou_3

Je suis passé cette après midi à mon boulot pour essayer ton dernier code et la croix en colonne I ne se met pas !

cdt

Xavier

xshbl a écrit :

Bonsoir Ti_chou_3

Je suis passé cette après midi à mon boulot pour essayer ton dernier code et la croix en colonne I ne se met pas !

cdt

Xavier

Date de fichier superieure a j-7 et rdv supprime?

Bonsoir

Oui j'ai supprimé toues les croix d'hier et les taches dans Outlook, j'ai relancé le fichier, il m'a refait toutes les taches dans Outlook, j'ai refermé le fichier, supprimé quelques taches et relancé le fichier. Aucune croix dans la colonne I

cdt

xshbl a écrit :

Bonsoir

Oui j'ai supprimé toues les croix d'hier et les taches dans Outlook, j'ai relancé le fichier, il m'a refait toutes les taches dans Outlook, j'ai refermé le fichier, supprimé quelques taches et relancé le fichier. Aucune croix dans la colonne I

cdt

testes ce fichier.

A faire :

Lancer macro via bouton crée

Les RDV vont se créer

Supprimer deux rdv

relancer la macro

re

Désolé mais toujours rien en colonne I

cdt

Rechercher des sujets similaires à "macro outlook"