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 Function

J'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ème

par

Filename:=variable & "\" & sFilename, _ 'c'est ici mon problème

ps: 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:=True

Bonjour le fil

@Guilhem, ATTENTION
vous voudrez bien, les prochaines fois, mettre le code donné entre balises SVP

Pour cela, utilisez le bouton </>

Rechercher des sujets similaires à "probleme localisation enregistrement"