Bonjour a tous
J'ai creer un code VBA qui va me chercher mes piece jointes dans UNE de mes regles et qui me l'enregistre sous le disque dur!
Voici le code (assez cour)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Public Sub TransfertPJ() On Error GoTo errorhandler 'Création de l'objet Outlook Set objoutlook = CreateObject("Outlook.application") 'Récupération de l'espace de nom d'outlook Set olns = objoutlook.GetNamespace("MAPI") 'Récupération du répertoire "boite de réception" par défault Set fld = olns.GetDefaultFolder(olFolderInbox) ' Initialisation du reperetoire de sauvegarde ' ne pas oublier l'anti-slash à la fin du repertoire Repertoire = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\" ' Sauve les pieces jointes des mails se trouvant dans la boîte de réception. ' Pour adresser un dossier dans la boite de réception on pourrait utiliser : ' fld.Folders("Nom_Du_Dossier").Items For Each mItem In fld.Folders("Confirmation Oddo").Items For Each att In mItem.Attachments If att.Type = olByValue Then ' Nom du fichier modifié pour l'enregistrement. NomDeFichierSurDisque = Range("C22") & "_" & Range("C20") & "_" & Range("B9") att.SaveAsFile Repertoire & NomDeFichierSurDisque End If Next Next Exit Sub errorhandler: MsgBox Err.Description, , Err.Source End Sub
Mais le fichier excel ne prend pas le titre que je lui donne (C22,20,B9). Tel quel le fichier s'enregistre sous le nom "___". Je pense que c'est parce que la macro n'ouvre pas le fichier elle l'enregistre directement sous le disque dur.
Que puis je rajouter pour que la macro ouvre le fichier et se referme en prennant en compte les informations C22 C20 et B9 pour nommer le fichier dans le disque dur?
Thanks
Je me demande si c'est une bonne idée de apres mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 Dim objoutlook As Outlook.Application Dim olns As Outlook.Namespace Dim mItem As Outlook.MailItem Dim att As Outlook.Attachment Dim fld As Outlook.MAPIFolder Dim Compteur As Integer Dim message, Repertoire, NomDeFichierSurDisque, NomDeFichier, Taille, Emetteur As String Dim wb As Workbook Option Explicit Public Sub TransfertPJ() On Error GoTo errorhandler 'Création de l'objet Outlook Set objoutlook = CreateObject("Outlook.application") 'Récupération de l'espace de nom d'outlook Set olns = objoutlook.GetNamespace("MAPI") 'Récupération du répertoire "boite de réception" par défault Set fld = olns.GetDefaultFolder(olFolderInbox) ' Initialisation du reperetoire de sauvegarde ' ne pas oublier l'anti-slash à la fin du repertoire Repertoire = "Z:\Risques et documentation OPCVM\Rapprochement Front Back\Confirmation Trades\Essai\" 'Inialisation des variables Message, NomDeFichier, NomDeFichierSurDisque, Taille, Emetteur message = NomDeFichierSurDisque = NomDeFichier = Taille = Emetteur = "" ' Sauve les pieces jointes des mails se trouvant dans la boîte de réception. ' Pour adresser un dossier dans la boite de réception on pourrait utiliser : ' fld.Folders("Nom_Du_Dossier").Items For Each mItem In fld.Folders("Confirmation Oddo").Items For Each att In mItem.Attachments If att.Type = olByValue Then ' Nom du fichier modifié pour l'enregistrement. Evite les controles superflus en renommant. NomDeFichier = att.Filename NomDeFichierSurDisque = NomDeFichier att.SaveAsFile Repertoire & NomDeFichierSurDisque End If Next Next
Donc je disais de simuler l'ouverture de chaqu'un des fichiers enregistré. Comme ça on réenregistre chacun des fichiers sous le titre que l'on veut non?
donc je pensais a ça dans la suite du code mais ça ne semble pas fonctionner
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 'On ouvre les pieces jointe qui sont maintenant des fichiers Workbooks.Open Filename:=NomDeFichierSurDisque 'Et on les enregistre avec un autre titre tiré des donné du fichier With ActiveWorkbooks NomFichier = .Range("C22") & "_" & .Range("C20") & "_" & .Range("B8") End With .SaveAs Filename:= NomFichier & ".xls", FileFormat:=xlNormal .Close
Partager