Outlook VBA : Sauvegarder une pièce jointe sur le dur après réception d'un mail ?

lebarbo

XLDnaute Occasionnel
Bonjour à tous,

Je souhaiterais après réception d'un mail spécifique (détectacle grâce à l'objet), enregistrer la pièce jointe (un CSV) automatiquement sur le dur tout en modifiant le fichier avant ou après l'enregistrement.
J'ai bien cherché des scripts mais sans succès.

Merci d'avance pour votre aide,
 

lebarbo

XLDnaute Occasionnel
Re : Outlook VBA : Sauvegarder une pièce jointe sur le dur après réception d'un mail

Merci kiki29 mais comment je peux faire pour que le code s'execute quand le mail arrive. J'ai essayé par une règle en executant un script mais je n'ai rien dans le champ script ?
 

kiki29

XLDnaute Barbatruc
Re : Outlook VBA : Sauvegarder une pièce jointe sur le dur après réception d'un mail

Salut,je précise que je n'utilise pas OutLook et donc ne te fournirais que qqs liens en espérant qu'ils te seront utiles, Voir Ce lien n'existe plus
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Outlook VBA : Sauvegarder une pièce jointe sur le dur après réception d'un mail

Bonsoir à tous

lebarbo
mais comment je peux faire pour que le code s'execute quand le mail arrive.
Il faut mettre ton code VBA dans : ThisOutlookSession (l'équivalent de ThisWorkBook pour Excel)


VB:
Private Sub Application_Startup()
' et ici ton code VBA de sauvegarde de ta pièce jointe
End Sub

 
Dernière édition:

lebarbo

XLDnaute Occasionnel
Re : Outlook VBA : Sauvegarder une pièce jointe sur le dur après réception d'un mail

Bonjour à tous,

Merci pour votre aide,
Je viens de trouver le code et ça fonctionne, par contre j'aimerais l'adapter en ajoutant dans ma règle que le mail doit venir d'un destinataire spécifique et que le sujet doit comporter le nom "Test Att" mais que cela fonctionne même si le nom fait partie d'un sujet plus long ex : "azerty Test Att qsddffgh".
Et je souhaiterais aussi modifier le fichier CSV, par exemple ajouter le chiffre 1 dans la cellule A2 de la feuille 1.

Merci d'avance,

Ci-dessous le lien et le code :

Description de la programmation à l'aide de règles Outlook

Dim WithEvents objInbox As Outlook.Items
Private Sub Application_Startup()
Set objInbox = Session.GetDefaultFolder(olFolderInbox).Items
End Sub
Private Sub objInbox_ItemAdd(ByVal Item As Object)
If Item.Class = olMail And Item.Subject = "Test Att" Then
If Item.Attachments.Count > 0 Then
Dim objAttachments As Outlook.Attachments
Set objAttachments = Item.Attachments
For Each objAttach In objAttachments
' Does not handle duplicate filename scenarios
objAttach.SaveAsFile "C:\Test\" & objAttach.FileName
Next
Set objAttachments = Nothing
End If
End If
End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Outlook VBA : Sauvegarder une pièce jointe sur le dur après réception d'un mail

Bonjour à tous

Il est toujours intéressant (en tout cas c'est mon avis) de citer la source d'un code VBA.
Merci de l'avoir fait, lebarbo ;)


Et je souhaiterais aussi modifier le fichier CSV, par exemple ajouter le chiffre 1 dans la cellule A2 de la feuille 1.
Un fichier CSV en tant que tel ne contient pas de cellules mais juste des données brutes séparées par une virgule (d'ou le nom de l'extension: CSV pour Comma-Separated Values)

Il faut donc voir du côté de Open (cf l'aide de VBA, touche F1)

 
Dernière édition:

lebarbo

XLDnaute Occasionnel
Re : Outlook VBA : Sauvegarder une pièce jointe sur le dur après réception d'un mail

Bonjour,

Pour simplifier je peux enregistrer le fichier en .xls puis le modifier et le fermer en l'enregistrant à nouveau en CSV.
J'ai testé ce code (je donne la source ; ) que j'ai intégré dans ThisOutlookSession :

Excel

'Déclaration des variables
Dim appExcel As Excel.Application 'Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel

'Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\MonFichierExcel.xls")
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1)

Mais ça bug dès la première ligne :
Dim appExcel As Excel.Application 'Application Excel
 

Staple1600

XLDnaute Barbatruc
Re : Outlook VBA : Sauvegarder une pièce jointe sur le dur après réception d'un mail

Re

Il faut cocher dans VBE la référence à Microsoft Scripting Runtime pour éviter ce désagrément.
(ALT+F11 puis aller dans Outils/Références)

(ou écrire le code différemment)
Essaie de modifier ainsi
VB:
'Déclaration des variables
Dim appExcel 'As Excel.Application 'Application Excel
Dim wbExcel 'As Excel.Workbook 'Classeur Excel
Dim wsExcel 'As Excel.Worksheet 'Feuille Excel
'fin modifs

PS:: Pourquoi ne pas simplement utiliser l'assistant d'importation Texte d'Excel ° en VBA ??
°: voir exemple ci-dessous (c'est plus simple non ?)
Code:
Sub Macro1()
Workbooks.Open Filename:="C:\Temp\test.csv"
End Sub
 
Dernière édition:

lebarbo

XLDnaute Occasionnel
Re : Outlook VBA : Sauvegarder une pièce jointe sur le dur après réception d'un mail

Re,
La case à cocher ne fonctionne pas mais la modif du code si, merci.
Sinon pour ton code et ouvrir le CSV comment je peux le traiter après en code VBA, je n'ai jamais fait ça :(
Pour te donner un exemple de ce que je dois faire sur ce fichier. C'est de supprimer toutes les lignes où je retrouve en 5ème position "CP".
Exemple :

bbbb;vvv;fbbf;gtgt;CP;gfgf (à supprimer)
bbbb;vvv;fbbf;gtgt;AA;gfgf (à conserver)
bbbb;vvv;fbbf;gtgt;AB;gfgf (à conserver)

Merci,
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 399
Membres
103 537
dernier inscrit
alisafred974