Problème de localisation d'enregistrement
Bonjour, je vais vous exposer mon petit problème.
Je suis en train de réaliser une macro qui doit à partir d'un classeur Excel créer un pdf et l'envoyer à des contact.
Le pdf créé doit être enregistré dans le même fichier que le classeur Excel.
J'ai un problème lorsque je veux exporter mon pdf vers le fichier.
Lorsque j'utilise variable = application.path puis msgbox variable, j'obtiens bien mon chemin.
Lorsque je fais activesheet.ExportAsFixedFormat et que mon Filename := variable & "Nom du fichier" j'obtiens une erreur 1004 Document non enregistré. Le document est peut être ouvert ou une erreur s'est produite.
Je vous joints mon code si ca peut vous aider.
Sub Envoyer_Mail_Outlook()
Dim ObjOutlook As New Outlook.Application
Dim oBjMail
Dim Nom_Fichier As String
Dim Fichier_Prendre As String
Dim variable As String
Dim sFilename As String
Dim Name As String
variable = Application.Path
MsgBox sRep
sFilename = ThisWorkbook.Name & " " & Range("D4").Value & ".pdf" 'mon nom du doc pdf
MsgBox sFilename
Sheets(Array("Feuil1", "Feuil3")).Select
ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=variable & sFilename, _ 'c'est ici mon problème
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True
Set ObjOutlook = New Outlook.Application
Set oBjMail = ObjOutlook.CreateItem(olMailItem)
Nom_Fichier = Name FindLastFile(sRep) 'Name
MsgBox Nom_Fichier 'vérifier si le fichier est bien trouvé
If Nom_Fichier = "" Then Exit Sub
With oBjMail
.To = Sheets("Feuil1").Range("A5").Value ' le destinataire
.Subject = Sheets("Feuil1").Range("A5").Value 'l'objet du mail
.Body = "Madame, Monsieur," & vbCrLf & " " & vbCrLf & "Veuillez trouver joint à ce mail le document au format pdf pour le chantier mentionné en objet" & vbCrLf & " " & vbCrLf & "Cordialement" & vbCrLf & " " & vbCrLf & "M. Simon" 'le corps du mail
.Attachments.Add Nom_Fichier
.Display
.Send
End With
'ObjOutlook.Quit
Set oBjMail = Nothing
Set ObjOutlook = Nothing
End Sub
Function FindLastFile(Path As String)
'cette fonction permet de chercher le fichier le plus récent dans le répertoire
Dim fName As String
Dim fDate As Date
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Dim folder
Set folder = fso.GetFolder(Path)
Dim Files
Set Files = folder.Files
Dim File
For Each File In Files
If File.DateCreated > fDate Then
fDate = File.DateCreated
fName = File.Name
End If
'Debug.Print File.Name, File.DateCreated, "=>", fName, fDate
Next
Set Files = Nothing
Set folder = Nothing
Set fso = Nothing
FindLastFile = Path & "\" & fName
End FunctionJ'ai utilisé des morceaux de code trouvés par ci par là, veuillez m'excuser si ce code peut faire dresser des poils à certains ^^
bonjour,
sans avoir regardé le reste du code
remplace cette instruction
Filename:=variable & sFilename, _ 'c'est ici mon problèmepar
Filename:=variable & "\" & sFilename, _ 'c'est ici mon problèmeps: A l'avenir, ce serait bien de mettre le code erreur que tu reçois, plutôt que simplement "j'ai une erreur"
Bonjour Mr. Sulfurique
Merci pour cette idée :D mais ça ne fonctionne pas. J'y ai crus...
Concernant mon problème c'est une erreur 1004 : "document non enregistré. Le document est peut être ouvert ou une erreur s'est produite à l'enregistrement.
Bien entendu le fichier n'est pas ouvert.
Je vais continuer à faire des essais. Si je trouve la solution je posterai le code.
re-bonjour,
affiche le nom du fichier Pdf et vérifie si tout semble correct (par exemple ainsi). Quel est le nom affiché ?
nom_fichier = variable & " \" & sFilename
MsgBox nomfichier
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nom_fichier, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=TrueBonjour le fil
@Guilhem, ATTENTION
vous voudrez bien, les prochaines fois, mettre le code donné entre balises SVP
Pour cela, utilisez le bouton </>