Bonjour
Novice sur VBA, je me prends à me passionner pour ce monde plein de potentiel, et ce sujet est mon premier que je poste moi-même (habituellement je trouve toutes mes solutions sur la toile, grâce aux forums comme ici, et merci à vous tous au passage).
Contexte:
Je travaille sur Microsoft 365.
Je souhaite mettre en place au moins 2 dispositifs dont le deuxième me paraît le plus dur (et important):
1/ Un mail automatiquement généré destiné à une liste d'adresses avec inclusion d'un bouton de vote ("Valider"/"Refuser" par ex).
Cette liste d'adresses serait référencée dans un classeur Excel et je pensais notamment à du publipostage, mais ne pouvant pas inclure un bouton de vote automatiquement avec le publipostage, je réfléchis à une macro.
J'ai une grossière macro pour la génération de ce mail :
2/ Je souhaite faire une exportation automatique sur Excel des résultats de vote par mail évoqué ci-avant, et les voir s'afficher et compilés tout propres sur une feuille de calcul, (dans le but de faire des relances automatiques dans un 3ème temps pour ceux qui n'ont pas voté...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub envoie_mail() Dim olApp As Outlook.Application Dim OLspace As Outlook.Namespace Dim OLinbox As Outlook.MAPIFolder Dim OLfolder As Outlook.MAPIFolder Dim OLmail As Outlook.MailItem Dim OLpj As Outlook.Attachment Dim Msg As MailItem Set objOL = New Outlook.Application Set Msg = objOL.CreateItem(olMailItem) Msg.To = Email Msg.Subject = Range("Mail_subject") Msg.Body = "Hello," & vbNewLine & vbNewLine & _ "Please be informed that Blablabla" & vbNewLine & vbNewLine & _ 'Msg.Attachments.Add Source:=nom_doc Msg.VotingOptions = "Valider;refuser" Msg.To = Email Msg.Display Set objOL = Nothing End Sub
J'ai donc cette macro, qui me sort une "Erreur d'exécution '13' : incompatibilité de type" en me surlignant le "Next" en jaune...
(Dans un dernier temps, je ne suis pas contre des idées pour organiser les relances de mails si pas de réponses après x jours)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59 Sub chMail() Set olApp = CreateObject("Outlook.application") Set OLspace = olApp.GetNamespace("MAPI") Set OLinbox = OLspace.GetDefaultFolder(olFolderInbox) Dim OLmail As Outlook.MailItem For Each OLmail In OLinbox.Items If OLmail.Subject = "Valider: " Then Dim OLbody As String OLbody = OLmail.SenderName olresponse = OLmail.VotingResponse oltime = OLmail.CreationTime olrecus = OLmail.ReceivedTime olreceipt = OLmail.ReadReceiptRequested Sheets(1).Range("A" & i).Select With Selection .Value = OLbody End With Sheets(1).Range("B" & i).Select With Selection .Value = olresponse End With Sheets(1).Range("C" & i).Select With Selection .Value = oltime End With Sheets(1).Range("D" & i).Select With Selection .Value = olrecus End With Sheets(1).Range("E" & i).Select With Selection .Value = olreceipt End With ElseIf OLmail.Subject = "Refuser: " Then OLbody = OLmail.SenderName olresponse = OLmail.VotingResponse oltime = OLmail.CreationTime olrecus = OLmail.ReceivedTime Sheets(1).Range("A" & i).Select With Selection .Value = OLbody End With Sheets(1).Range("B" & i).Select With Selection .Value = olresponse End With Sheets(1).Range("C" & i).Select With Selection .Value = oltime End With Sheets(1).Range("D" & i).Select With Selection .Value = olrecus End With Sheets(1).Range("E" & i).Select End If i = i + 1 Next End Sub
Je précise que je ne comprends évidemment pas tout tout tout des subtilités des lignes de code que je vous écris ici.
Je suis à l'écoute de toute piste intéressante
Merci par avance
Partager