Enregistrement vers un dossier dont le chemin dépend de variables

Bonjour,

J'ai pour but de créer une macro qui créera un fichier pdf depuis deux feuilles Excel.

Ce Pdf sera enregistrer dans le même dossier que le classeur Excel. (Si on déplace le classeur Excel, le fichier pdf créé devra s'enregistrer vers le nouvel emplacement).

Par la suite, le pdf devra être envoyé depuis cette macro via ma boite mail avec l'outils Outlook.Application

Voici le code que j'ai réalisé pour le moment.

Sub enregistrepdf()

Dim sRep As String
Dim sFilename As String

Sheets(Array("Feuil1", "Feuil2")).Select

sRep = ThisWorkbook.Path

sFilename = ThisWorkbook.Name & Range("D4").Value

ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=sRep & sFilename, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True

Si je fait un Msgbox de sRep & sFilename j'obtiens le chemin où devrait se trouver mon pdf.

Cependant je retrouve mon pdf dans le dossier "Documents" de mon ordinateur...

J'ai beau tourner mes codes dans tous les sens, impossible d'enregistrer mon pdf dans le même dossier que mon fichier Excel.

Si je retire Filename:= sRep & sFilename, _ j'obtiens le même résultat

Connaissez-vous une manière de coder ça ?

Bonjour,

sRep = ThisWorkbook.Path & "\"

Sinon, vous avez sélectionné Feuil1 et Feuil2, vous souhaitez imprimer ces deux onglets ? Ou uniquement l'onglet actif comme dans votre code ?

Bonjour Eric,

Merci pour cette réponse.

Je veux effectivement créé mon pdf à partir des deux feuilles selectionnées.

Quand je rajoute & "\" à ma ligne j'obtiens une erreur d'execution '1004': Document non enregistré. Le document est peut-être ouvert ou une erreur s'est produite lors de l'enregistrement.

Je vais essayer de solutionner ce problème.

Bonjour,

ActiveSheet.ExportAsFixedFormat ne fonctionne pas pour une sélection d'onglets. Il vous faut imprimer via une imprimante pdf.

Salut,

Tu dois bien ajouter un "\" après ThisWorkBook.Path
Tu as quoi dans Range("D4").value car là cela m'intrigue

sFilename = ThisWorkbook.Name & Range("D4").Value

Tu dois avoir :

  • le chemim: ThisWorkBook.Path & "\"
  • Le nom de fichier : ThisWorkbook.name
  • et Range(....) c'est une nouvelle extension ?

re,

En plus tu ajoute le chemin et le nom de fichier...

Tu l'a en direct avec ThisWorkbook.FullName & Range("D4").value

Si tu veux récupérer le nom de ton fichier s'il ne contient qu'un "." tu peut faire strFullName = Split(ThisWorkbook.FullName, ".")(1) & ".pdf"

sinon avec InStrRev strFullName = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, ".") - 1) & ".pdf"

Pour compléter ma dernière réponse : Imprimer plusieurs onglets

Re,

ActiveSheet.ExportAsFixedFormat ne fonctionne pas pour une sélection d'onglets. Il vous faut imprimer via une imprimante pdf.

Je viens de tester et tout fonctionne normalement chez moi...

image

Pour Jean-Paul,

Vous avez imprimé tous vos onglets ?

Les deux qui étaient sélectionnés, c'est ce qu'il recherche non ?

C'est peut-être fonction de la version d'Excel

Tu as raison, j'ai revu l'exemple cité et cela fonctionne.

Bonjour Messieurs,

Merci pour toutes ces réponse.

dans ma commande Range("D4").value j'ai un numéro qui correspond à un chantier.

Je cherche bien à réaliser un assemblage de 2 feuilles vers un seul pdf.

Je vais essayer votre méthode d'impression depuis une imprimante pdf.

:D Merci

Rechercher des sujets similaires à "enregistrement dossier chemin depend variables"