Bonjour à tous,
Je vous présente mon problème.
J'utilise une fonction qui manipule des cellules afin de créer des fichiers excel et les envoyer à une adresse email outlook.
Voici mon code :
Et voici la fonction sendolmail :
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 function Result_Send(ISIN,Date,SRRI,Fund_classification,Fund_Name,Date_Comp) Date_str = cellstr(datestr(datenum(Date_Comp,'dd/mm/yyyy'))); Date_vect = datevec(Date_str); Date_y = num2str(Date_vect(1)); Date_m = num2str(Date_vect(3)); Date_d = num2str(Date_vect(2)); Date_wnbr = num2str(weeknum(Date_str)); Vect_Concat = [Fund_Name ISIN Date SRRI Fund_classification]; Sel_Uni = unique(Vect_Concat(:,1)); for i=1:size(Sel_Uni,1) Colzo{i} = strcmp(Sel_Uni(i),Vect_Concat(:,1)); Vect_Uni{i} = Vect_Concat(Colzo{i},:); FundName = Vect_Uni{1,i}{1}; filename = strcat('SRRI_',FundName,'_WEEK',Date_wnbr,'_',Date_y,'_',Date_m,'_',Date_d,'.xlsx'); Folder=strrep(FundName, ' ', '_'); if exist(Folder,'file') else mkdir(Folder); end filedir = strcat(Folder,'\',filename); copyfile('SRRI_Results.xlsx',filedir); xlswrite(filedir,Vect_Uni{1,i}(:,2),1,'A2'); xlswrite(filedir,Vect_Uni{1,i}(:,3),1,'B2'); xlswrite(filedir,Vect_Uni{1,i}(:,4),1,'C2'); xlswrite(filedir,Vect_Uni{1,i}(:,5),1,'D2'); %FundNames = FundName; %FileNames = filedir; Text_mail = strcat('The calculation of SRRI for the fund ',FundName,' is a success. You will find enclosed the results of the calculation. This is an automated message, please do not respond.'); Titre = strcat('SRRI results for the fund <<',FundName,'>>'); sendolmail('bob@gmail.com',Titre,Text_mail,{['C:\Users\Desktop\Matlab Code\Actual\',filedir]}) end end
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 function sendolmail(to,subject,body,attachments) %Sends email using MS Outlook. h = actxserver('outlook.Application'); mail = h.CreateItem('olMail'); mail.Subject = subject; mail.To = to; mail.BodyFormat = 'olFormatHTML'; mail.HTMLBody = body; if nargin == 4 for i = 1:length(attachments) mail.attachments.Add(attachments{i}); end end mail.Send; h.release;
Alors le principe est de prendre d'abord des infos sur une date pour créer les noms des fichiers excel.
Ensuite on stocke dans une variable tous les vecteurs (qui sont des cell) : Vect_Concat.
On regarde tous les noms différents ds la 1ère colonne, ce sont des noms de fonds.
Et en fonction du nombre de fonds on crée le mm nombre de fichier excel et de mail avec les fichiers excel en pièces jointes.
Ce que je voudrais faire c'est sortir la fonction sendolmail de la boucle de ma fonction principale pour n'envoyer qu'un mail avec pour titre SRRI results et avec toutes les pièces jointes dans un seul mail. Mais je ne sais pas cmt mettre en forme les variables qui pourraient stocker les noms des fonds ainsi que les noms des fichiers excel et pour que je puisse les mettre ensuite simplement ds la fonction sendolmail...
Si quelqu'un a l'envie et le temps de jeter un oeil, cela me ferait très plaisir.
Merci d'avance,
Cordialement,
Quentin D.
Partager