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 mail

Jusque 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

@+

Rechercher des sujets similaires à "piloter outlook vba inserer tableau replyall"