Pièce jointe + Suppression

Résolu/Fermé
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 - 8 sept. 2014 à 11:15
Villette54 Messages postés 300 Date d'inscription vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 - 8 sept. 2014 à 15:39
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,

1 réponse

borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
8 sept. 2014 à 13:12
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 vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
8 sept. 2014 à 14:31
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 jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
8 sept. 2014 à 14:54
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 vendredi 15 mars 2013 Statut Membre Dernière intervention 31 juillet 2018 28
8 sept. 2014 à 15:39
Je pense qu'on va opter pour la solution avec un seul fichier en suspend dans un dossier perdu !
0