Ma macro ne lance pas l'écriture du mail

bonjour a tous je ne comprend pas pourquoi,

Mais ma macro ne lance pas l'écriture du mail et je ne comprend pas pour quoi.

Pourriez vous m'aidez car cela fait 3 semaines que je bloque sur ce code pour envois de mail depuis les rappels.

merci d'avance.

Option Explicit
Public nomfichier As String
Public typefichier As String
Public recherche As String
Public pj As String

Public Sub Application_Reminder(ByVal Item As Object)

Dim objMsg As MailItem

recherche = Item.Subject

Set objMsg = Application.CreateItem(olMailItem)

If Item.MessageClass <> "IPM.Appointment" Then 'Vérifie si il sagit d'un rapel dans le calendrier

  Exit Sub

End If

If Item.Categories <> "MAILS AUTOMATIQUES" Then 'Vérifie si le rappel fait partie de la catégorie: MAILS AUTOMATIQUES

Exit Sub

 End If

  Exit Sub

    objMsg.Importance = olImportanceHigh

    objMsg.To = Item.Location

    objMsg.Subject = Item.Subject

    objMsg.Body = Item.Body

    'demande AR
    objMsg.OriginatorDeliveryReportRequested = True
    'demande confirmation de lecture
    objMsg.ReadReceiptRequested = True

    Call Test

    objMsg.Attachments.Add pj

    objMsg.Display

 MsgBox "Noubliez pas de faire le devis pour ce rappel!", vbOKOnly, vbCritical, "Rappel rédaction devis!"

Set objMsg = Nothing
End Sub

Public Sub Test()

typefichier = ".docx"
nomfichier = recherche
Dim name As String
 name = nomfichier + typefichier

    Chemin "C:\Users\pourcel\Desktop\cle ub 32 giga\", name

End Sub

Public Sub Chemin(Dossier As String, fichiercherche As String)

    Dim Fso As Object
    Dim Dos As Object
    Dim SousDos As Object
    Dim D As Object
    Dim Fichier As Object

    Set Fso = CreateObject("Scripting.FileSystemObject")

    'si le dossier n'existe pas, fin
    If Fso.FolderExists(Dossier) = False Then Exit Sub

    Set Dos = Fso.GetFolder(Dossier)

    'recherche le fichier dans le dossier
    For Each Fichier In Dos.Files

        'si trouvé, atribu chemin à la varible pj, la variable pj est utilisé dans la macro précédente pour envoi de mail  via l'application reminder qui se trouve dans ThisOutlookSession.

        If InStr(Fichier, fichiercherche) <> 0 Then

        'MsgBox une pièce jointe existe + attribu le chemin du fichier a la variable pj

        pj = Fichier.Path

        MsgBox "Une pièce jointe  correspond a ce rappel !", vbOKOnly + vbInformation, "Une pièce-jointe existe pour ce rappel"
        'MsgBox pj

         Else

        'MsgBox aucune pièce jointe

    MsgBox "Aucune pièce jointe ne correspond a ce rappel !", vbOKOnly + vbCritical, "Problème de pièce-jointe"

           Exit Sub

        End If

    Next Fichier

    Set SousDos = Dos.SubFolders

    'recherche dans les sous dossiers
    For Each D In SousDos

        For Each Fichier In D.Files

            'évite l'erreur des dossiers interdits
            On Error Resume Next

        'si trouvé, atribu chemin à la varible pj, la variable pj est utilisé dans la macro précédente pour envoi de mail  via l'application reminder qui se trouve dans ThisOutlookSession.

            If InStr(Fichier, fichiercherche) <> 0 Then

        'MsgBox une pièce jointe existe + attribu le chemin du fichier a la variable pj
         pj = Fichier.Path

         MsgBox "Une pièce jointe  correspond a ce rappel !", vbOKOnly + vbInformation, "Une pièce-jointe existe pour ce rappel"

        ' MsgBox pj

       Else

        'MsgBox aucune pièce jointe

        MsgBox "Aucune pièce jointe ne correspond a ce rappel !", vbOKOnly + vbCritical, "Problème de pièce-jointe"

                Exit Sub

            End If

        Next Fichier

        'rappel de la proc pour chercher les
        'dossiers enfants
        Chemin D.Path, fichiercherche

    Next D

End Sub

Bonsoir,

le troisième Exit Sub n'est-il pas de trop ?

@ bientôt

LouReeD

Avec un indentation plus clair du code on voit bien qu'il est en trop !

Public Sub Application_Reminder(ByVal Item As Object)

    Dim objMsg As MailItem

    recherche = Item.Subject
    Set objMsg = Application.CreateItem(olMailItem)

    If Item.MessageClass <> "IPM.Appointment" Then 'Vérifie si il sagit d'un rapel dans le calendrier
        Exit Sub
    End If

    If Item.Categories <> "MAILS AUTOMATIQUES" Then 'Vérifie si le rappel fait partie de la catégorie: MAILS AUTOMATIQUES
        Exit Sub
    End If

    Exit Sub

    objMsg.Importance = olImportanceHigh
    objMsg.To = Item.Location
    objMsg.Subject = Item.Subject
    objMsg.Body = Item.Body
    'demande AR
    objMsg.OriginatorDeliveryReportRequested = True
    'demande confirmation de lecture
    objMsg.ReadReceiptRequested = True

    Call Test

    objMsg.Attachments.Add pj
    objMsg.Display
    MsgBox "Noubliez pas de faire le devis pour ce rappel!", vbOKOnly, vbCritical, "Rappel rédaction devis!"

    Set objMsg = Nothing

End Sub

@ bientôt

LouReeD

Bonjour Loureed, merci pour votre aide effectivement je n’avais pas vu le end sub en trop . Je rencontre un soucis. Lorsque je lance la macros il me détecte une erreur sur « public sub application reminder » nom ambigu. Je ne comprend pas pour quoi . Merci d’avance bonne journée romain .

Bonjour,

nom ambiguë est souvent le fait d'avoir deux nom identiques pour deux choses différentes : nom d'une variable = nom d'une procédure par exemple.

De plus comment appelez vous votre procédure ? car vous y mettez un paramètre, il faut donc qu'elle soit appelée avec ce paramètre :

Public Sub Application_Reminder(ByVal Item As Object) veut dire que quelque part dans le code vous avez un : Call Application_Reminder(MonObjet).

@ bientôt

LouReeD

Bonjour merci pour votre aide . La macro application reminder se lance seul elle se trouve dans thaïs Outlook session. L’autre macro test est pour trouvé le fichier correspondant au sujet du mail /rappel et renvoie le chemin à la variable pj. Celle ci étant dans la macro application reminder pour que le fichier soit en pièce jointe . Il est fort probable que il y est un conflit au moment du transfert de la variable pj . Merci pour votre aide .

Je n'ai pas fait grand chose, vous savez, mais merci de votre remerciement !

@ bientôt

LouReeD

Un merci ne me coûte rien . Pour le temps que vous avez accordé à mon problème. Comment peut on utilisé une variable présente dans mail item procédure object pour quel soit recherché dans une autre procédure initiée pas sub test . Je pense que je je ne déclare pas correctement mes variables .

Rechercher des sujets similaires à "macro lance pas ecriture mail"