Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Outlook > VBA Outlook

Réponse
 
Outils de la discussion
Vieux 03/11/2008, 11h51   #1 (permalink)
Futur Membre du Club
 
Date d'inscription: février 2008
Messages: 31
Par défaut enregistrement sélectif des PJ

Bonjour,
j'utilise ce code ( qui n'est pas de moi) pour enregistrer les pièces jointes reçues dans Outlook 2007; il fonctionne bien; je l'ai même intégré dans une règle (script reconnu en remplaçant Sub par Function).

Code :
Sub PJ()
Const olFolderInbox = 6
 
Set objoutlook = CreateObject("Outlook.Application")
Set objNamespace = objoutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)
 
Set colItems = objFolder.Items
 
For Each objMessage In colItems
    intCount = objMessage.Attachments.Count
    If intCount > 0 Then
        For i = 1 To intCount
            objMessage.Attachments.Item(i).SaveAsFile "F:\Photos\réception\" & _
                objMessage.Attachments.Item(i).FileName
        Next
    End If
Next
 
End Sub
Je souhaiterais y intégrer un If... Then pour enregistrer seulement les fichiers *.jpg. Un connaisseur plus pointu que moi pourrait-il m'aider . Merci.

Dernière modification par sanfric ; 03/11/2008 à 16h49
sanfric est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 03/11/2008, 18h12   #2 (permalink)
Membre expérimenté
 
Avatar de Oliv-
 
Date d'inscription: mars 2006
Localisation: Tourcoing
Âge: 37
Messages: 530
Par défaut

Salut,

Voici une solution :

Code :
Sub PJ()
Const olFolderInbox = 6
 
Set objoutlook = CreateObject("Outlook.Application")
Set objNamespace = objoutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)
 
Set colItems = objFolder.Items
 
For Each objMessage In colItems
    intCount = objMessage.Attachments.Count
    If intCount > 0 Then
        For i = 1 To intCount
        if UCASE(right(objMessage.Attachments.Item(i).FileName;3))="JPG" then
            objMessage.Attachments.Item(i).SaveAsFile "F:\Photos\réception\" & _
                objMessage.Attachments.Item(i).FileName
        end if
        Next
    End If
Next
 
End Sub
__________________
Meilleurs voeux 2009
Have a nice day.
Oliv'
OUI à l'utilisation, NON au « copillage » Merci de citer la source
Oliv- est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 04/11/2008, 14h14   #3 (permalink)
Futur Membre du Club
 
Date d'inscription: février 2008
Messages: 31
Par défaut Merci Oliv

Bonjour,

Il y avait une petite erreur de syntaxe dans le code précédent. Cela fonctionne avec le code suivant.
Code :
   If UCase(Right(objMessage.Attachments.Item(i).FileName, 3)) = "JPG" Then
Pour ceux et celles qui souhaiteraient résoudre le même problème, le code complet de ce SaveAttachments sélectif qui trie les fichiers joints selon leur type

Code :
Function PJ (strID As Outlook.MailItem)
Set objoutlook = CreateObject("Outlook.Application")
Set objNamespace = objoutlook.GetNamespace("MAPI")
Set objFolder = objNamespace.GetDefaultFolder(olFolderInbox)
 
Set colItems = objFolder.Items
For Each objMessage In colItems
   intCount = objMessage.Attachments.Count
    If intCount > 0 Then
        For i = 1 To intCount
          Rem enregistrement sélectif
        
            If UCase(Right(objMessage.Attachments.Item(i).FileName, 3)) = "JPG" Then
            objMessage.Attachments.Item(i).SaveAsFile "F:\Photos\réception\" & _
                objMessage.Attachments.Item(i).FileName
             End If
             If UCase(Right(objMessage.Attachments.Item(i).FileName, 3)) = "DOC" Then
            objMessage.Attachments.Item(i).SaveAsFile "F:\TEXTPHO\" & _
                objMessage.Attachments.Item(i).FileName
             End If
           
        Next
    End If
    
    
Next
 
 
End Function
Cela fonctionne chez moi: à tester par d'autres.
Merci à Oliv pour ses suggestions
sanfric est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBA

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Outlook > VBA Outlook



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide