Bonjour à tous et enchanté car c'est mon premier post (même si je viens très régulièrement consulter le forum),
Je sais que des dizaines et des dizaines de sujets correspondent à mon problème. Toutefois, je viens vers vous car je n'ai pas réellement trouvé de solution.
Dans le cadre de mon travail, j'ai adapté une macro d'olivier Catteau http://outlook.developpez.com/faq/?page=VBA#Receive_Save_PJ permettant d'enregistrer sur le DD, les pièce jointe d'un mail. J'utilise cette macro en complément de certaines règles Outlook.
Jusqu'à aujourd'hui, j'utilisais Office 2002 et tout fonctionnait très bien...
Mon code adapté :
	
	
	
	
	
		
En passant sous 2007, le script ne se lance plus.
J'ai plusieurs hypothèses :
Merci d'avance pour votre aide.
Cordialement,
adv0541
	
		
			
		
		
	
				
			Je sais que des dizaines et des dizaines de sujets correspondent à mon problème. Toutefois, je viens vers vous car je n'ai pas réellement trouvé de solution.
Dans le cadre de mon travail, j'ai adapté une macro d'olivier Catteau http://outlook.developpez.com/faq/?page=VBA#Receive_Save_PJ permettant d'enregistrer sur le DD, les pièce jointe d'un mail. J'utilise cette macro en complément de certaines règles Outlook.
Jusqu'à aujourd'hui, j'utilisais Office 2002 et tout fonctionnait très bien...
Mon code adapté :
		Code:
	
	
	Sub extrait_PJ_vers_rep(strID As Outlook.MailItem)
MsgBox "ok"
' ***olivier CATTEAU***
' 23 avril 2007
    Dim olNS As Outlook.NameSpace
    Dim MyMail As Outlook.MailItem
    Dim expediteur
    Set olNS = Application.GetNamespace("MAPI")
    Set MyMail = olNS.GetItemFromID(strID.EntryID)
    'MsgBox "nouveau message"
    If MyMail.Attachments.Count > 0 Then
        expediteur = MyMail.SenderEmailAddress
        'on crée le répertoire où mettre les fichiers joints ##########################################################
        'J:\Téléphonie\mon répertoire\ doit déjà exister !!!
        Repertoire = "J:\mon répertoire\"
                
        If Repertoire <> "" Then
            If "" = Dir(Repertoire, vbDirectory) Then
                MkDir Repertoire
            End If
        End If
        'on traite les pj
        Dim PJ, typeatt
        For Each PJ In MyMail.Attachments
            'vérification si c'est une PJ Embedded
            typeatt = Isembedded(strID, PJ.Index)
            If typeatt = "" Then
                If "" <> Dir(Repertoire & PJ.FileName, vbNormal) Then
                    MsgBox Repertoire & PJ.FileName & " existe !"
                    'si existe copie vers le répertoire old
                    If "" = Dir(Repertoire & "old", vbDirectory) Then
                        MkDir Repertoire & "old"
                    End If
                    FileCopy Repertoire & PJ.FileName, Repertoire & "old\" & PJ.FileName
                End If
                PJ.SaveAsFile Repertoire & PJ.FileName
            End If
        Next PJ
        'Marque lu
        MyMail.UnRead = False
        MyMail.Save
    End If
    Set MyMail = Nothing
    Set olNS = Nothing
Fin:
End Sub
' Function: Fields_Selector
' Purpose: View type of attachment
' olivier catteau fevrier 2006
Function Isembedded(ByVal strEntryID As String, attindex As Integer) As Variant
Dim oSession As MAPI.Session
' CDO objects
Dim oMsg As MAPI.Message
Dim oAttachs As MAPI.Attachments
Dim oAttach As MAPI.Attachment
' initialize CDO session
On Error Resume Next
Set oSession = CreateObject("MAPI.Session")
oSession.Logon "", "", False, False
' get the message created earlier
Set oMsg = oSession.GetMessage(strEntryID)
' set properties of the attached graphic that make
' it embedded and give it an ID for use in an <IMG> tag
Set oAttachs = oMsg.Attachments
Set oAttach = oAttachs.Item(attindex)
Dim strCID As String
strCID = oAttach.Fields(&H3712001E)
Isembedded = strCID
Set oMsg = Nothing
oSession.Logoff
Set oSession = Nothing
End Function
	En passant sous 2007, le script ne se lance plus.
J'ai plusieurs hypothèses :
- C'est la règle qui ne marche pas car le msgbox en début de procédure n'apparait pas.
Concernant la règle c'est une règle simple avec l'adresse du destinateur, un mot clef du corps de message, et le script. Jusqu'ici je n'avais pas eu de problème.
 - Une nouvelle référence est à activer sous 2007. Pour info, sont activés :
- Visual Basic for Applications
 - MS Outlook 12.0 Object Library
 - OLE Automation
 - MS Office 12.0 Object Library
 - MS CDO for Windows 2000 Library
 - Microsoft Scripting Runtime
 - Microsoft CDO 1.21 Library
 
 - Dans ses instructions, Olivier Catteau incite à utiliser NewMailEx à partir de 2003. J'ai essayé de regarder sur quelques forums, mais j'avoue être un peu perdu avec celle-ci.
 
Merci d'avance pour votre aide.
Cordialement,
adv0541