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

Fermé
Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019 - 26 févr. 2018 à 22:42
Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019 - 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
A voir également:

6 réponses

thev Messages postés 1852 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 23 avril 2024 681
Modifié le 27 févr. 2018 à 13:55
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;..." 
0
Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019
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.
0
thev Messages postés 1852 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 23 avril 2024 681
27 févr. 2018 à 17:34
Pour cela, il faut disposer quelque part de l'adresse mail de l'apprenant.
0
Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019
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
0
thev Messages postés 1852 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 23 avril 2024 681
27 févr. 2018 à 20:00
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")
0
Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019
27 févr. 2018 à 21:12
ca fonctionne toujours... -_- est ce que je peux tenvoyer le dossier
0
Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019
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
0
Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019
23 mars 2018 à 19:40
MonMEssage.to = Workbook . Sheets(feuil1). Cells(8,"T")
0
thev Messages postés 1852 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 23 avril 2024 681
28 févr. 2018 à 11:13
Oui
0
Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019
28 févr. 2018 à 17:08
parfait je t'envoie cela demain !!! merci d'avance
0
Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
thev Messages postés 1852 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 23 avril 2024 681
8 mars 2018 à 09:27
Un petit souci. Lien non disponible ......
0
Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019
8 mars 2018 à 16:02
okay je vais ressayer ce soir !!! étrange
0
Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019
8 mars 2018 à 20:16
Voila le lien : https://cjoint.com/c/HCitpzL5i1J
un gros merci
0
thev Messages postés 1852 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 23 avril 2024 681
Modifié le 11 mars 2018 à 15:32
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

0
Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019
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
0
thev Messages postés 1852 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 23 avril 2024 681 > Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019
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
0
Icemansuperced Messages postés 85 Date d'inscription mardi 21 novembre 2017 Statut Membre Dernière intervention 4 février 2019 > thev Messages postés 1852 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 23 avril 2024
14 mars 2018 à 19:32
Bonjour,
parfait je ne voyais par le Graphique 1 cela a fonctionné merci beaucoup!!!
0