Piloter Excel depuis Outlook - VBA (inserer tableau Excel avec ReplyAll)
Hello,
Je suis stagiaire dans une banque et j'ai pour projet, entre autres, d'automatiser des retours de prêt qui sont envoyés par mail dans un fichier Excel.
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
'en cas d'erreur
On Error Resume Next
Application.ScreenUpdating = True
'Definir la boite mail, le dossier de destination
Set ns_outlook = Application.GetNamespace("MAPI")
Set MyInbox = ns_outlook.GetDefaultFolder(olFolderInbox).Parent
Set myDossRetour = MyInbox.Folders("Inbox").Folders("Returns")' Séparer le matricule de l'objet Outlook
ArrID = Split(EntryIDCollection, ",")
'Boucle sur l'objet Outlook
For i = 0 To UBound(ArrID)
Set item_outlook = ns_outlook.GetItemFromID(ArrID(i)) 'Identifier l'objet en cours
If item_outlook.Class = olMail Then 'verifier si c'est bien un email
Set itm = item_outlook ' identification du mail
Set PJ = itm.Attachments
expediteur = itm.SenderName ' indentification de l'expediteur
objet_email = itm.Subject 'sujet du mailJusque là tout va bien je défiinis mon mail, ma boite, les PJ, expediteurs..
If PJ.Count > 0 Then
FichierSAVE = "\\kephren.sf.ca.lux\users$\N3W\home\Returns" & "\"
For Each laPJ In PJ
On Error Resume Next
Select Case True
Case objet_email Like "Goldman Sachs Returns*": Chemin = "GS\" & Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hhmmss") & "_" & "GS Returns.xlsx"
Contrepartie = "Goldman Sachs"
Case objet_email Like "Credit Suisse Europe Limited returns*": Chemin = "CS\" & Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hhmmss") & "_" & " CS Returns.xls"
Contrepartie = "Credit Suisse"
Case objet_email Like "Return Event Notification*": Chemin = "Jefferies\" & Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hhmmss") & "_" & " Jefferies Returns.xls"
Contrepartie = "Jefferies"
Case objet_email Like "test": Chemin = "Test\" & Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hhmmss") & "_" & "Test Returns.xls"
Contrepartie = "Test"
Case Else: Chemin = ""
End Select
If Not Chemin = "" Then
itm.Move myDossRetour
laPJ.SaveAsFile FichierSAVE & Chemin
Call FormateExcel(wbk, ReferenceWB, FeuilleRecap, FichierSAVE, Chemin, Contrepartie)C'est ici que je coince lorsque j'appelle ma procedure "FormateExcel", voir ci-dessous
Sub FormateExcel(wbk As Excel.Workbook, ReferenceWB As Excel.Workbook, FeuilleRecap As Excel.Worksheet, FichierSAVE As String, Chemin As String, Contrepartie As String)
Dim XlApp As Excel.Application
Set XlApp = New Excel.Application
With XlApp
.Visible = True
.EnableEvents = False
End With
Set wbk = Workbooks.Open(FichierSAVE & Chemin, False, , , , True)
Set ReferenceWB = XlApp.Workbooks.Open("C:\Public\BOOK MASS.xlsm", False, , , , True)
Set FeuilleRecap = ActiveWorkbook.Worksheets("Tableau recapitulatif")--> La macro en pas à pas m'ouvre bien les classeurs "wbk" et "ReferenecWB" mais les valeurs des variables sont "Nothing" et si je mets dans mon code "wbk.Activate" et bien il saute toute la procedure pour revenir à ma Private Sub Outlook.
De même pour "FeuilleRecap" il saute cette instruction et va directement à End Sub pour retourner sur la PrivateSub Outlook.
Je pense que le probleme vient de comment je definis "wbk" et "ReferenceWB" mais j'ai essayé tout ce que j'ai trouvé et impossible de trouver une solution donc je m'en remets à vous.
Le but serait ensuite d'activer le classeur, d'extraire un tableau qui est dedans et le copier dans un mail réponse avec la méthode itm.ReplyAll
En vous remerciant d'avance si vous avez ne serait-ce qu'une piste.
Petit up si quelqu'un peut jeter un oeil ?
Le pire c'est que ca doit vraiment être un truc tout con mais j'ai beau essayer, ca ne marche pas. Merci
Bonjour dndy13
La base de la programmation est de définir ces variables, or là, tu n'en as aucune de définit
Mets "Option Explicit" en tout début de module, cela t'indiquera les variables manquantes quand tu feras une compilation de ton code
@+