Hello, hello;
Tout est dans le titre...
J'explique mon process:
Tous les matins, en partant de chez moi, je m'envoie un mail avec mon Blackberry (Outlook est ouvert sur mon poste) dont l'objet est, disons, "Lance ma macro Now!"
Une regle de messagerie dit que je lance un script quand le sujet est "Lance ma macro Now!" (je suis pas sur que l'IT soit super content que potentiellement tout le monde peut avoir acces a mon poste par e-mail, mais c'est un autre probleme):
Le script outlook:
J'ouvre donc Fichier.xls et lance la Macro MACRO. Jusque la tout va bien.
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 Sub LaunM(myMtgReq As Outlook.MailItem) Dim StrID, olNS StrID = myMtgReq.EntryID Set olNS = Application.GetNamespace("MAPI") Dim MyMail As Outlook.MailItem Set MyMail = olNS.GetItemFromID(StrID) Dim appExcel As Excel.Application Dim wbExcel As Excel.Workbook Dim wsExcel As Excel.Worksheet Dim MavarXL Set appExcel = CreateObject("Excel.Application") appExcel.Visible = True Set wbExcel = appExcel.Workbooks.Open("C:\Fichier.xls") wbExcel.Application.AddIns("Analysis ToolPak").Installed = False wbExcel.Application.AddIns("Analysis ToolPak").Installed = True wbExcel.Worksheets(3).Range("E14").Value = MyMail.Subject Set wsExcel = wbExcel.Worksheets(1) MavarXL = appExcel.Run("Fichier.xls" & "!MACRO") End Sub
Cette MACRO va ouvrir tout un tas de fichiers pour a son tour lancer des macros.
Dans nombreux de ces fichiers, le resultat de la macro est envoye par e-mail (je me contente d'afficher l'email pour faire un check et ils sont lancer manuellement, de toute facon l'alerte outlook empeche le lancement automatique sauf en passant par le petit soft Redemption ou CDO qui a jamais marche chez moi, bref).
Parfois ca lance le mail, parfois pas (ca bugue)...
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 Sub SNDMail() Application.ScreenUpdating = False Application.DisplayAlerts = False Dim source As Range Dim OutApp As Outlook.Application Dim OutMail As Outlook.MailItem Range(Mail).Select Set source = Selection Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(olMailItem) With OutMail .To = "Moi" .CC = "" .BCC = "" .Subject = "Mail" & Range("C4").Text .HTMLBody = RangetoHTML Application.Wait (Now() + 0.0001) .Display End With Set OutMail = Nothing Set OutApp = Nothing End Sub
Au niveau de ca:
Toujours sur les memes fichiers... Strange... Il va de soi que lance avec outlook qui a la main, ca marche a chaque fois (c'est a dire si je lance directement manuellement la macro excel qui va ouvrir mes fichiers, lancer les macros et afficher les mails, quand c'est outlook qui la lance - et donc qui ne rend la main que quand tout le process est termine - sur 4 fichiers ca bogue, les macros sont construites exactement de la meme maniere...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(olMailItem)
Une idee?
Lameth
Partager