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