Menu

VBA - Envoi d'un courriel automatique d'un segment

Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention - 26 févr. 2018 à 22:42 - Dernière réponse : Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention
- 23 mars 2018 à 19:40
Bonjour a tous,
j'espere que vous avez passé un bon weekend et merci d'avance pour le temps que vous accorderai a ma question..
Voici ce que je veux faire, j'ai un dashboard qui comporte trois graphiques et que j'ai un segment de tout le personnel. Donc, lorsque je clique sur un nom dans le segment, les trois graphiques s'actualise pour la personne donné. De plus, dans jai un TCD qui s'actualise aussi et qui indique dans le cellule Z3 le courriel a lequel je voudrais envoyer seulement la situation trier par le segment (comme un screenshot si on veut)...
Je ne suis pas super bon dans les macro et j'ai suivi une formation qui ma mené a cela ... mais cela ne fonctionne pas et je crois qu'il me manqué des infos ...

Sub envoiClasseur()
Dim Fichier As Variant
'le programme ouvre une fenêtre où l'on sélectionne le fichier'
Fichier = Application.GetOpenFilename("Tous les fichiers(*.*),*.*")

MsgBox Fichier
'ici on demande d'utiliser Outlook comme client de messagerie'
Dim MaMessagerie As Object
Dim MonMessage As Object
Set MaMessagerie = CreateObject("Outlook.application")
Set MonMessage = MaMessagerie.Createitem(0)

'ici nous définissions les champs du mail'
'entre guillemet il faut indiquer les adresses mail'
MonMessage.to = " = sub EnterValue (Cell(5,26))"

'ici nous commençons la rédaction du mail
MonMessage.attachments.Add Fichier

'sujet du mail'
MonMessage = "Situation générale de l'apprenant pour le mois"

'Corps du mail'
contenu = "***The English follows the French***"
contenu = contenu & Chr(10) & Chr(13)
'les caractères Chr indique un saut de ligne'
contenu = contenu & "Bonjour" & Chr(10) & Chr(13)
contenu = contenu & "Voici trois graphiques résumant la situation de votre apprenant pour janvier. Vous trouverez un premier graphique indiquant le nombre absence par jour de votre employé. Un deuxième graphique montrant le nombre de journée de recouvrement. Le troisième graphique démontrant le nombre de total de retard. Si vous n'êtes plus le directeur de l'apprenant, s'il-vous-plait nous avisez ou pour toute autre erreur. Si vous avez des questions veuillez consulter le document des mesures de contrôles " & Chr(10) & Chr(13)
contenu = contenu & "Hello" & Chr(10) & Chr(13)
contenu = contenu & "You will find three graphics illustrating the situation of your learner for the month of January. The first graphic indicates the number of absences per days of your employee. The second graphic illustrates the number of day of absence. The third graphic illustrates the total time of delay. If you're no longer the manager of the learner, please notify us. If you've any question please consult the document bellows on control measures" & Chr(10) & Chr(13)
contenu = contenu & "CSC"
MonMessage.body = "contenu"

'ici on provoque l'envoi du mail et de sa pièce jointe'
MonMessage.Send

'réinitialisation de la messagerie'
Set MaMessagerie = Nothing

'Boite de dialogue qui confirme l'envoi du message et de sa pièce jointe'
MsgBox "Votre mail a bien été envoyé"

End Sub
Afficher la suite 

Votre réponse

18 réponses

thev 1719 Messages postés lundi 7 avril 2008Date d'inscription 27 mai 2018 Dernière intervention - Modifié par thev le 27/02/2018 à 13:55
0
Merci
Bonjour,

ceci ne correspond pas une liste de destinataires :
 'entre guillemet il faut indiquer les adresses mail'
MonMessage.to = " = sub EnterValue (Cell(5,26))" 

vous devez avoir :
MonMessage.to = "adresse1;adresse2;..." 
Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention - 27 févr. 2018 à 16:04
Bonjour,
okay, je comprend. Par contre cela ne ressous pas ma problématique, car je ne veux pas envoyer le document a tout le monde... je veux juste envoyer le dashboard de l'apprenant a lui meme et non a tout le monde.
Commenter la réponse de thev
thev 1719 Messages postés lundi 7 avril 2008Date d'inscription 27 mai 2018 Dernière intervention - 27 févr. 2018 à 17:34
0
Merci
Pour cela, il faut disposer quelque part de l'adresse mail de l'apprenant.
Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention - 27 févr. 2018 à 19:26
bien je l'ai mentionné l'adresse courriel apparait dans la cellule z3 ... a moins que vous voulez dire quelque chose ... que je dois inséré tout les addresses courriels dans la macro
Commenter la réponse de thev
thev 1719 Messages postés lundi 7 avril 2008Date d'inscription 27 mai 2018 Dernière intervention - 27 févr. 2018 à 20:00
0
Merci
Pour faire référence au contenu de cette cellule, il faut indiquer dans quelle feuille de quel classeur elle se trouve :
 
MonMessage.to =  Workbooks(?).Sheets(?).Cells(3,"Z")
Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention - 27 févr. 2018 à 21:12
ca fonctionne toujours... -_- est ce que je peux tenvoyer le dossier
Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention - 23 mars 2018 à 19:27
Bonjour Thev,
si par exemple, je veux que cela soit une MAcro que je peux active sur plus d'un document, est -ce que cela peut foncitonné sans qu'il n'aille rien de coder dans Workbook? exemple si le courriel est dans Feuil1 et la cellule T8
Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention - 23 mars 2018 à 19:40
MonMEssage.to = Workbook . Sheets(feuil1). Cells(8,"T")
Commenter la réponse de thev
thev 1719 Messages postés lundi 7 avril 2008Date d'inscription 27 mai 2018 Dernière intervention - 28 févr. 2018 à 11:13
0
Merci
Oui
Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention - 28 févr. 2018 à 17:08
parfait je t'envoie cela demain !!! merci d'avance
Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention - 7 mars 2018 à 18:00
Bonjour Thev,
désolé du délai... voici le fichier joint: https://www.cjoint.com/c/HChq7cjPSLJ... Un énorme merci déjà pour le temps consacré à ma question
Commenter la réponse de thev
thev 1719 Messages postés lundi 7 avril 2008Date d'inscription 27 mai 2018 Dernière intervention - 8 mars 2018 à 09:27
0
Merci
Un petit souci. Lien non disponible ......
Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention - 8 mars 2018 à 16:02
okay je vais ressayer ce soir !!! étrange
Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention - 8 mars 2018 à 20:16
Voila le lien : https://cjoint.com/c/HCitpzL5i1J
un gros merci
Commenter la réponse de thev
thev 1719 Messages postés lundi 7 avril 2008Date d'inscription 27 mai 2018 Dernière intervention - Modifié par thev le 11/03/2018 à 15:32
0
Merci
Bonjour,

Insérer ce code dans la feuille "DASHBOARD_JANVIER"


Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim apprenant As Range, email As Range
Dim sh_temp As Worksheet, contenu As String, graphe As ChartObject

'// Assignation apprenant et adresse mail associée
With Target
Set apprenant = .VisibleFields(1).DataRange
Set email = .VisibleFields(2).DataRange
End With

'// Confirmation envoi du mail
If Not MsgBox("Souhaitez-vous envoyer le graphique à " & apprenant & " ?", 36, "Confirmation") = 6 Then Exit Sub

'// création feuille temporaire et copie des graphique à envoyer sur la feuille temporaire
Sheets.Add After:=Sheets(Sheets.Count): Set sh_temp = Sheets(Sheets.Count): sh_temp.Activate
For Each graphe In Me.ChartObjects
graphe.Copy
sh_temp.Range(graphe.TopLeftCell.Address).PasteSpecial (xlPasteAll)
Next graphe

'// Création mail et envoi ......................................................................................
With sh_temp
With .MailEnvelope
'Crée le contenu du message avec insertion de sauts de ligne
contenu = "***The English follows the French***"
contenu = contenu & Chr(10) & Chr(13)
'les caractères Chr indique un saut de ligne'
contenu = contenu & "Bonjour" & Chr(10) & Chr(13)
contenu = contenu & "Voici trois graphiques résumant la situation de votre apprenant pour janvier. Vous trouverez un premier graphique indiquant le nombre absence par jour de votre employé. Un deuxième graphique montrant le nombre de journée de recouvrement. Le troisième graphique démontrant le nombre de total de retard. Si vous n'êtes plus le directeur de l'apprenant, s'il-vous-plait nous avisez ou pour toute autre erreur. Si vous avez des questions veuillez consulter le document des mesures de contrôles " & Chr(10) & Chr(13)
contenu = contenu & "Hello" & Chr(10) & Chr(13)
contenu = contenu & "You will find three graphics illustrating the situation of your learner for the month of January. The first graphic indicates the number of absences per days of your employee. The second graphic illustrates the number of day of absence. The third graphic illustrates the total time of delay. If you're no longer the manager of the learner, please notify us. If you've any question please consult the document bellows on control measures" & Chr(10) & Chr(13)
contenu = contenu & "CSC"
.Introduction = contenu

'Destinataires, objet et envoi
With .Item
.To = email
.CC = ""
.BCC = ""
.Subject = "Situation générale de l'apprenant pour le mois"
.Send
End With
End With
End With

'// Attente complétude opération d'envoi du mail
DoEvents

'// suppression feuille temporaire et sauvegarde classeur
Application.DisplayAlerts = False
sh_temp.Delete
ThisWorkbook.Save
Application.DisplayAlerts = True

End Sub



ci-joint fichier
https://www.cjoint.com/c/HCloADPuFGz

Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention - 13 mars 2018 à 18:33
Bonjour Thev!!!
un gros merci pour ton travail, par contre il a un soucis... dans le courriel que cela envoie, il y a environ 200 ligne de codification qui est envoyé...
deplus si j'apporte cette macro a un autre document, cela va t'il envoyé toutes les graphiques ? ou je dois rajouté ceux que je veux a la macro
thev 1719 Messages postés lundi 7 avril 2008Date d'inscription 27 mai 2018 Dernière intervention > Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention - 13 mars 2018 à 19:39
dans le courriel que cela envoie, il y a environ 200 ligne de codification qui est envoyé...
Curieux. Je n'ai pas eu ce problème dans les tests que j'ai effectués.

deplus si j'apporte cette macro a un autre document, cela va t'il envoyé toutes les graphiques ?
La réponse est oui.
Si par exemple, vous ne voulez envoyer que le premier graphique, il faudra modifier cette partie du code ainsi
    '// création feuille temporaire et copie des graphique à envoyer sur la feuille temporaire
    Sheets.Add After:=Sheets(Sheets.Count): Set sh_temp = Sheets(Sheets.Count): sh_temp.Activate
    With Me.ChartObjects("Graphique 1")
            .Copy
            sh_temp.Range(.TopLeftCell.Address).PasteSpecial (xlPasteAll)
    End With
Icemansuperced 82 Messages postés mardi 21 novembre 2017Date d'inscription 22 mai 2018 Dernière intervention > thev 1719 Messages postés lundi 7 avril 2008Date d'inscription 27 mai 2018 Dernière intervention - 14 mars 2018 à 19:32
Bonjour,
parfait je ne voyais par le Graphique 1 cela a fonctionné merci beaucoup!!!
Commenter la réponse de thev