Outlook temps tâches outlook

DJARNAUD

XLDnaute Occasionnel
Bonjour à tous,

Dans outlook j'ai une liste de tâche auxquels j'attribue un temps de travail (via la colonne travail total). Je souhaiterai savoir s'il y a un moyen rapide d'avoir la somme de tous ces temps de travail?

J'y arrive en faisant un copié collé dans excel et en déroulant une formule mais pas très pratique.

Merci d'avance

Cordialement
 
Solution
Rebonjour,

Voici le code mis à jour :
VB:
Sub AfficherTempsTotaux()
Dim l_l_i As Long
Dim l_l_nbItems As Long
Dim l_o_selection As Outlook.Selection
Dim l_l_totalWorkSum As Long
Dim l_l_actualWorkSum As Long
Dim l_l_totalWork As Long
Dim l_l_actualWork As Long
Dim l_s_text As String
Dim l_o_dicoTotalWorkValues As Object   'Scripting.Dictionary
Dim l_o_dicoActualWorkValues As Object  'Scripting.Dictionary

    Set l_o_selection = Application.ActiveExplorer.Selection
    If l_o_selection.Count >= 0 Then
        Set l_o_dicoTotalWorkValues = CreateObject("Scripting.Dictionary")
        Set l_o_dicoActualWorkValues = CreateObject("Scripting.Dictionary")
        For l_l_i = 1 To l_o_selection.Count
            l_l_totalWork = 0...

mromain

XLDnaute Barbatruc
Bonjour DJARNAUD, le forum,

Voici un essai avec une macro qui affiche le cumul des "Travail total et Travail réel" de l’ensemble des tâches sélectionnées. Il faut donc d’abord sélectionner la/les tâche(s), puis lancer la macro.
Code:
Sub AfficherTempsTotaux()
Dim l_l_i As Long
Dim l_l_nbTasks As Long
Dim l_o_selection As Selection
Dim l_o_task As TaskItem
Dim l_l_totalWork As Long
Dim l_l_actualWork As Long
Dim l_s_text As String

    Set l_o_selection = Application.ActiveExplorer.Selection
    For l_l_i = 1 To l_o_selection.Count
        If TypeOf l_o_selection.Item(l_l_i) Is TaskItem Then
            l_l_nbTasks = l_l_nbTasks + 1
            Set l_o_task = l_o_selection.Item(l_l_i)
            l_l_totalWork = l_l_totalWork + l_o_task.TotalWork
            l_l_actualWork = l_l_actualWork + l_o_task.ActualWork
        End If
    Next l_l_i
    Set l_o_task = Session.GetDefaultFolder(olFolderTasks).Items(1)
    If l_l_nbTasks = 0 Then
        MsgBox "Aucune tâche n'est sélectionnée."
    Else
        l_s_text = l_l_nbTasks & " tâche(s) sélectionnée(s) :"
        l_s_text = l_s_text & vbNewLine & "  - Temps total : " & VBA.Format(l_l_totalWork / 60 / 24, "hh:mm")
        l_s_text = l_s_text & vbNewLine & "  - Temps réel : " & VBA.Format(l_l_actualWork / 60 / 24, "hh:mm")
        MsgBox l_s_text
    End If
    Set l_o_selection = Nothing
    Set l_o_task = Nothing
End Sub
Il faut mettre le code dans un simple module.
Si cette solution te convient, la macro peut ensuite être lancée depuis un bouton sur la barre d’outils Accès rapide.

A+
 

mromain

XLDnaute Barbatruc
Bonjour DJARNAUD,

Je n'ai pas testé, mais je crois que ça doit être ça :
Code:
Sub AfficherTempsTotaux()
Dim l_l_i As Long
Dim l_l_nbTasks As Long
Dim l_o_selection As Selection
Dim l_o_task As TaskItem
Dim l_l_totalWork As Long
Dim l_l_actualWork As Long
Dim l_s_text As String

    Set l_o_selection = Application.ActiveExplorer.Selection
    For l_l_i = 1 To l_o_selection.Count
        If TypeOf l_o_selection.Item(l_l_i) Is TaskItem Then
            l_l_nbTasks = l_l_nbTasks + 1
            Set l_o_task = l_o_selection.Item(l_l_i)
            l_l_totalWork = l_l_totalWork + l_o_task.TotalWork
            l_l_actualWork = l_l_actualWork + l_o_task.ActualWork
        End If
    Next l_l_i
    If l_l_nbTasks = 0 Then
        MsgBox "Aucune tâche n'est sélectionnée."
    Else
        l_s_text = l_l_nbTasks & " tâche(s) sélectionnée(s) :"
        l_s_text = l_s_text & vbNewLine & "  - Temps total : " & l_l_totalWork
        l_s_text = l_s_text & vbNewLine & "  - Temps réel : " & l_l_actualWork
        MsgBox l_s_text
    End If
    Set l_o_selection = Nothing
    Set l_o_task = Nothing
End Sub

A+
 

DJARNAUD

XLDnaute Occasionnel
Bonjour mromain,

Je vous remercie pour votre réponse. Le résultat est bien sous le format attendu. Merci beaucoup.

Toutefois, dans le calcul, seules les tâches sont prises en compte mais pas les emails avec un marqueur (et qui basculent donc dans la liste des tâches). Comment est il possible de résoudre cela?

Merci
 

DJARNAUD

XLDnaute Occasionnel
Bonjour DJARNAUD,

Qu'entends-tu par les emails avec un marqueur ?
Je n'ai pas réussi à voir si des e-mails peuvent avoir des notions de TotalWork ou de ActualWork.

A+
En fait, quand je reçois un mail, il y a le bouton "drapeau rouge" qui permet de marquer un email comme tâche, ce qui génére une ligne dans la liste des tâches et à partir de là je peux attribuer un TotalWork ou de ActualWork.
 

mromain

XLDnaute Barbatruc
Bonjour DJARNAUD,

Désolé mais, n'utilisant pas les tâches dans Outlook, je galère un peu...
En fait, quand je reçois un mail, il y a le bouton "drapeau rouge" qui permet de marquer un email comme tâche, ce qui génére une ligne dans la liste des tâches
Cette partie-là, OK. J'arrive bien à voir un mail marqué dans la liste des tâches.

à partir de là je peux attribuer un TotalWork ou de ActualWork
C'est là que ça se complique, je n'arrive pas à attribuer un TotalWork ou un ActualWork.

Du coup, je ne peux pas avancer...

A+
 

DJARNAUD

XLDnaute Occasionnel
Bonjour mromain,

Oui bien sûr!
tout d'abord je marque l'email. Ensuite je vais dans l'onglet tâche puis dans la colonne "travail total" de la tâche concerné, je rentre manuellement le temps.

1623230813550.png


Merci
 

mromain

XLDnaute Barbatruc
Re-bonjour,

Merci pour l'explication.

Ci-dessous un code qui a l'air de marcher :
VB:
Sub test()
Dim l_l_i As Long
Dim l_l_nbItems As Long
Dim l_o_selection As Outlook.Selection
Dim l_l_totalWorkSum As Long
Dim l_l_actualWorkSum As Long
Dim l_l_totalWork As Long
Dim l_l_actualWork As Long
Dim l_s_text As String

    Set l_o_selection = Application.ActiveExplorer.Selection
    If l_o_selection.Count >= 0 Then
        For l_l_i = 1 To l_o_selection.Count
            l_l_totalWork = 0
            l_l_actualWork = 0
            On Error Resume Next
             l_l_totalWork = l_o_selection.Item(l_l_i).PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/id/{00062003-0000-0000-C000-000000000046}/81110003")
             l_l_actualWork = l_o_selection.Item(l_l_i).PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/id/{00062003-0000-0000-C000-000000000046}/81100003")
            On Error GoTo 0
            If (l_l_actualWork + l_l_totalWork) > 0 Then
                l_l_nbItems = l_l_nbItems + 1
                l_l_totalWorkSum = l_l_totalWorkSum + l_l_totalWork
                l_l_actualWorkSum = l_l_actualWorkSum + l_l_actualWork
            End If
        Next l_l_i
        If l_l_nbItems = 0 Then
            MsgBox "Aucun élément sélectionné n'a de temps de travail défini."
        Else
            l_s_text = l_l_nbItems & " élément(s) sélectionné(s) a/ont des temps de travail définis :"
            l_s_text = l_s_text & vbNewLine & "  - Temps total : " & l_l_totalWorkSum
            l_s_text = l_s_text & vbNewLine & "  - Temps réel : " & l_l_actualWorkSum
            MsgBox l_s_text
        End If
    Else
        MsgBox "Aucun élément sélectionné."
    End If
    Set l_o_selection = Nothing
End Sub

A+
 

DJARNAUD

XLDnaute Occasionnel
ça fonctionne trés bien!
par contre j'ai encore un petit truc, j'ai des tâches pour lesquelles la durée du travail total est en nombre de semaines...:eek:😅 pour ces tâches, la durée en minutes ne se calcule pas correctement.
Merci!
 

Discussions similaires

Statistiques des forums

Discussions
312 203
Messages
2 086 181
Membres
103 152
dernier inscrit
Karibu