Extraire des information d'un tableau pour les envoyer par outlook

Bonjour a tous

je tiens un tableau excel de suivi de projet dans mon entreprise

le tableau comporte plusieurs colonnes :

  • des taches à exécuter
  • étapes réalisées
  • une personne identifiée responsable de la tache
  • un délai de réalisation
  • un pourcentage de réalisation de la tache : 0 / 50% / 100%

mon souhait :

j'aimerais que toutes les taches en statut 0 ou 50% soit envoyé par mail via outlook par une manipulation simple, chaque semaine, à tous les responsables de ces taches. (aujourd'hui je réalise des copier collé de chaque ligne que j’insère dans des mails et que j’envoie a chaque participant)

but : leur rappeler par mail leurs taches en cours afin de préparer la réunion hebdomadaire : suivi de projet

cette gestion est elle réalisable

avez vous des solutions ? (fichier exemple en pièce jointe)

pour infos, je ne suis pas un crack sur excel....

merci d'avance pour vos solution

olivier

Bonjour,

une ébauche de solution, via une macro

Sub aargh()
    With Sheets("plan de progres ")
        dl = .Cells(Rows.Count, 3).End(xlUp).Row
        Set ol = CreateObject("outlook.application")
        Set dict = CreateObject("scripting.dictionary")
        For i = 11 To dl 'on parcourt toutes les tâches
            nom = .Cells(i, "I") 'nom  du pilote
            If Not dict.exists(nom) Then 'mail pas encore envoyé
                dict.Add nom, 0
                Set mail = Nothing
                For j = i To dl 'on recherche toutes les taches de ce pilote avec un pourcentage <100%
                    If .Cells(j, "L") < 1 And .Cells(j, "I") = nom Then
                        If mail Is Nothing Then Set mail = ol.createitem(0) 'on crée un mail
                        ' on prépare le corps du message
                        msg = "Salut " & nom & vbNewLine & vbNewLine & "En vue de notre prochaine réunion de projet, voici l'état d'avancement des différentes tâches sous ta responsabilité."
                        For k = 3 To 12 'on prend les rubrique de colonne C a L
                        If .Cells(8, k) = "" Then rubrique = .Cells(9, k) Else rubrique = .Cells(8, k)
                            msg = msg & rubrique & " : " & .Cells(j, k) & vbNewLine
                        Next k
                        msg = msg & vbNewLine & "Moi, chef de projet sympa"
                        With mail 'préparation du mail
                            .To = nom
                            .Subject = "projet x: état d'avancement de tes tâches"
                            .body = msg
                            .display
                        End With
                    End If
                Next j
            End If
        Next i
    End With
End Sub

bonjour

j'ai pu tester la macro.

une remarque : quand il y' a plusieurs lignes à traiter concernant le même responsable de tache, cela n' envoi que la dernière par mail.

ensuite est ce qu'une tache implique forcément un mail, ou est ce qu'il est possible d'avoir toutes les taches a traiter dans un seul mail pour un meme responsable de tache ?

merci beaucoup en tout cas pour votre implication

Bonjour,

voici le code adapté,

 Sub aargh()
    With Sheets("plan de progres ")
        dl = .Cells(Rows.Count, 3).End(xlUp).Row
        Set ol = CreateObject("outlook.application")
        Set dict = CreateObject("scripting.dictionary")
        For i = 11 To dl 'on parcourt toutes les tâches
            nom = .Cells(i, "I") 'nom  du pilote
            If Not dict.exists(nom) Then 'mail pas encore envoyé
                dict.Add nom, 0
                Set mail = Nothing
                For j = i To dl 'on recherche toutes les taches de ce pilote avec un pourcentage <100%
                    If .Cells(j, "L") < 1 And .Cells(j, "I") = nom Then
                        If mail Is Nothing Then
                        Set mail = ol.createitem(0) 'on crée un mail
                        msg = "Salut " & nom & vbNewLine & vbNewLine & "En vue de notre prochaine réunion de projet, voici l'état d'avancement des différentes tâches sous ta responsabilité." & vbNewLine & vbNewLine
                        End If
                          ' on prépare le corps du message
                        For k = 3 To 12 'on prend les rubrique de colonne C a L
                            If .Cells(8, k) = "" Then rubrique = .Cells(9, k) Else rubrique = .Cells(8, k)
                            msg = msg & rubrique & " : " & .Cells(j, k) & vbNewLine
                        Next k
                    End If
                Next j
                                        msg = msg & vbNewLine & "Moi, chef de projet sympa"
                With mail 'préparation du mail
                    .To = nom
                    .Subject = "projet x: état d'avancement de tes tâches"
                    .body = msg
                    .display
                    '.send pour envoyer le message automatiquement
                End With
            End If
        Next i
    End With
End Sub

Bonjour

merci beaucoup pour votre réactivité

nous allons tester la macro à la rentrée

bonjour

la macro fonctionne ! merci beaucoup

est il possible de modifier la mise en forme de cette façon :

conserver uniquement les colonnes C, E, F et K

et faire en sorte que le contenu de chaque tache soit sur la meme ligne dans le mail

merci d'avance

bonjour,

voici le code adapté

pardon mais il n'y a pas le code

bonjour,

voici le code qui est dans le classeur

Sub aargh()
    With Sheets("plan de progres ")
        dl = .Cells(Rows.Count, 3).End(xlUp).Row
        Set ol = CreateObject("outlook.application")
        Set dict = CreateObject("scripting.dictionary")
        For i = 11 To dl 'on parcourt toutes les tâches
            nom = .Cells(i, "I") 'nom  du pilote
            If Not dict.exists(nom) Then 'mail pas encore envoyé
                dict.Add nom, 0
                Set mail = Nothing
                For j = i To dl 'on recherche toutes les taches de ce pilote avec un pourcentage <100%
                    If .Cells(j, "L") < 1 And .Cells(j, "I") = nom Then
                        If mail Is Nothing Then
                            Set mail = ol.createitem(0) 'on crée un mail
                            msg = "Salut " & nom & vbNewLine & vbNewLine & "En vue de notre prochaine réunion de projet, voici l'état d'avancement des différentes tâches sous ta responsabilité." & vbNewLine & vbNewLine
                        End If
                        ' on prépare le corps du message
                        msg = msg & vbNewLine
                        For k = 3 To 12 'on prend les rubrique de colonne C a L
                            Select Case k
                                Case 6, 11  'colonne f,k 'avec nom de la rubrique
                                    If .Cells(8, k) = "" Then rubrique = .Cells(9, k) Else rubrique = .Cells(8, k)
                                    msg = msg & " " & rubrique & " : " & Replace(Replace(.Cells(j, k), Chr(10), ", "), Chr(13), "")
                                Case 3, 5 'colonne c,e sans nom de la rubrique
                                    msg = msg & " " & Replace(Replace(.Cells(j, k), Chr(10), ", "), Chr(13), "")
                            End Select
                        Next k
                    End If
                Next j
                msg = msg & vbNewLine & "Moi, chef de projet sympa"
                With mail 'préparation du mail
                    .To = nom
                    .Subject = "projet x: état d'avancement de tes tâches"
                    .body = msg
                    .display
                    '.send pour envoyer le message automatiquement enlever le caractère '
                End With
            End If
        Next i
    End With
End Sub

merci beaucoup

ca fonctionne !

Rechercher des sujets similaires à "extraire information tableau envoyer outlook"