Pièce jointe + Suppression

Résolu
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   -  
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai besoin d'un petit coup de main afin de finir une macro. Comme le titre l'indique le but de ma macro est de partir d'un fichier vierge de référence, qu'il faut compléter puis une fois compléter je souhaiterais que ce fichier s'enregistre sous un nom particulier (en fonction des données saisient), se mette en pièce jointe d'un mail et enfin se supprime (car je ne souhaite pas l'archivage de ces fichiers, le fait qu'ils soient dans un mail suffit) afin de retourner sur mon fichier de base.
J'ai réussi à faire les 2 premières étapes (grâce à l'aide du forum pour mes precedents besoins), or je suis incapable de faire la dernière (la suppression du fichier) car pour supprimer le fichier, il faut qu'il soit fermé et s'il est fermé la macro ne s'execute pas. En gros je tourne en rond...

Ci-dessous ma macro.
Sub Messagerie()

Application.DisplayAlerts = False
Application.EnableEvents = True
   
   
  Dim OL As Object
  Dim OLmail As Object
  Dim pj As String
  
  pj = ThisWorkbook.Path & "" & ThisWorkbook.Sheets("BDD - Code Matières").Cells(2, 10).Value & ".xlsm"
  

ThisWorkbook.SaveAs Filename:=pj, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False

  Set OLk_Appli = CreateObject("Outlook.Application")
  
  If OLk_Appli.Explorers.Count > 0 Then
    'Ok outlook ouvert
  Else
 
    OLk_OK = Shell("C:\Program Files\Microsoft Office\Office14\outlook.exe", vbHide)
  End If
   
  Set OL = CreateObject("Outlook.Application")
  Set OLmail = OL.CreateItem(0)
   
    With OLmail
        .To = "xxx"
        .Subject = "Rapport de production : " & ThisWorkbook.Sheets("BDD - Code Matières").Cells(2, 10).Value
        .Body = "Bonjour," & vbCrLf & vbCrLf & "Ci-joint le rapport de production." & vbCrLf & vbCrLf & "Bien à vous,"
        .Attachments.Add pj
        .Display
        '.Send
    End With
    
    Set OLmail = Nothing
    Set OL = Nothing
    Set OLk_Appli = Nothing

'Kill pj    
Application.Quit
Kill pj

End Sub


Si quelqu'un à une solution à mon problème, ou alors une alternative : je suis preneur !

Merci d'avance,
A voir également:

1 réponse

borntobealive Messages postés 138 Date d'inscription   Statut Membre Dernière intervention   7
 
slt,

Est-ce vraiment obligatoire de nomer le fichier excel ?
Parce que sinon une façon de contourner le problème serait de ne jamais et de mettre un
 application.displayAlert = false 
pour pas qu'il t'affiche un message d'erreur

Si c'est obligatoire t'es coincé parce que tu peux pas changer le nom d'un classeur sans l'enregistrer (la propriété
.name
est en lecture seule).

sinon tu peux l'enregistrer dans un dossier tampon et rajouter dans ta macro qu'au lancement des procédure 1 et 2 (que tu ne montre pas parce qu'elles marche tu supprime le contenu du dossier en question comme ça t'as que 1 déchet entre chaque rapport)

Je sais que c'est pas exactement ce que tu cherche, mais qui ne tente rien n'a rien.
Dis-moi si ça te va
0
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
 
Hello,

Merci de ta réponse, alors pour un peu plus d'explication :

- Oui je suis oblige de renommer mon fichier, car ce sont des rapports de production, et le fichier doit prendre le nom : "numéro du rapport@matière produite" en gros afin de pouvoir être identifié et classé.
- Je ne pense pas que la solution du dossier qu'il faut vider soit efficace puisque c'est +/- ce que nous avons actuellement (un dossier où l'on enregistre tout directement) mais cela pose des soucis (plusieurs personnes qui encode le meme rapport, bref)

Peut-être que ce que je demande est impossible, auquel cas je trouverais une alternative (en enregistrant mes fichiers dans un dossier perdu au fin fond de notre réseau par exemple, mais je préfère éviter si possible).

En tout cas merci pour ton aide.
0
borntobealive Messages postés 138 Date d'inscription   Statut Membre Dernière intervention   7
 
dans ma solution tu ne garde qu'un fichier dans le dossier perdu (vu que tu le supprime à chaque fois que tu en envoi un nouveau).

Sinon en dernier recours tu peux faire un classeur qui sert qu'à générer ces fichiers : il ouvre un nouvl excel, fais tout ce que tu veux lui faire faire, détruit le fichier qu'il vient de créer et enfin se ferme.
Le problème reste du même niveau, il faut le ranger quelque part.
0
Villette54 Messages postés 300 Date d'inscription   Statut Membre Dernière intervention   28
 
Je pense qu'on va opter pour la solution avec un seul fichier en suspend dans un dossier perdu !
0