Enregistrer un Excel en PDF avec chemin d'accès

Bonjour,

cela fait bien longtemps que je n'ai plus fait de VBA et j'avoue que je suis un peu perdu.

j'ai pris des informations un peu partout, mais je ne m'en sors plus. j'ai besoin d'enregistrer un fichier excel en PDF avec un nom bien particulier dans un dossier bien particulier.

ci-dessous ce que j'ai fait

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'
' ENREGISTREMENTPDF Macro
'

'

Dim Chemin As String, NomFichier As String

NomFichier = Range("B2").Value & "_" & Format(Date, "dd_mm_yyyy") & "_VIREMENT" & ".pdf"
'NomFichier = Range("C2").Value & "_" & Range("G2").Value & "_VIREMENT" & ".pdf"

With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then ' Clic sur Ok
Chemin = .SelectedItems(1)
Else
' Clic sur Annuler
Exit Sub
End If
End With

Sheets("virement").ExportAsFixedFormat Type:=xlTypePDF, Filename:="Y:\02.DOUANE\DEMANDE DE VIREMENT DOUANE\Demande comptabilisée" & NomFichier, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True


End Sub

malheureusement, comme mon fichier ne fonctionne pas, je n'arrive pas à savoir ou est l'erreur, mais aussi si le nom sélectionné est le bon.
Pourriez-vous me venir en aide s'il-vous-plaît?

je vous en remercie par avance

Bonjour,

Voici un essai d'adaptation du code :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
NomFichier = Range("B2").Value & "_" & Format(Date, "dd_mm_yyyy") & "_VIREMENT" & ".pdf"
srep = "Y:\02.DOUANE\DEMANDE DE VIREMENT DOUANE\Demande comptabilisée"
With Application.FileDialog(msoFileDialogFolderPicker)
    If .Show = -1 Then srep = .SelectedItems(1)
End With
if dir(srep, vbdirectory) = "" then msgbox "dossier introuvable", 16 exit sub 'test dossier
Chemin = srep & "\" & NomFichier
Sheets("virement").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub

On a un répertoire par défaut en dur dans le code. Si la sélection de dossier est annulée, le fichier ira dans le dossier par défaut, sinon dans celui choisi par l'utilisateur.

En général, on a comme répertoire par défaut celui du fichier exécutant :

srep = thisworkbook.path

Attention, il vaut mieux éviter les points "." dans les noms de dossier !

Cdlt,

bonjour,

merci pour votre rapide retour et pour votre remarque sur les points dans le nom du dossier.

j'ai donc fait un copie/colle de votre code, mais j'ai une ligne qui ressort en rouge : if dir(srep, vbdirectory) = "" then msgbox "dossier introuvable", 16 exit sub 'test dossier

je me suis donc dis que je pouvais éventuellement la supprimer pour voir. Et la, j'ai un pop-up d'erreur de compilation : variable non définie

image

Pouvez-vous essayer celui-ci :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
dim NomFichier$, srep$, Chemin$
NomFichier = Range("B2").Value & "_" & Format(Date, "dd_mm_yyyy") & "_VIREMENT" & ".pdf"
srep = "Y:\02.DOUANE\DEMANDE DE VIREMENT DOUANE\Demande comptabilisée"
'With Application.FileDialog(msoFileDialogFolderPicker)
'    If .Show = -1 Then srep = .SelectedItems(1)
'End With
'if dir(srep, vbdirectory) = "" then msgbox "dossier introuvable", 16: exit sub 'test dossier
Chemin = srep & "\" & NomFichier
Sheets("virement").ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub

Cdlt,

Merci, je n'ai plus d'erreur apparente.

cependant, il m'ouvre la fenêtre pour le chemin d'enregistrement. serait-il possible de faire l'enregistrement automatique?

Oui, je viens d'éditer le dernier code.

je m'excuse mais je ne comprend pas.

j'ai bien insérer votre dernière modification, mais l'enregistrement ne se fait pas. Je ne dispose pas du fichier que je viens de créer.

j'ai certainement loupé une étape.

cdt

Et vous avez fermé votre classeur pour l'avoir ? Sachant que ce code est à mettre dans le module thisworkbook (il s'exécute à la fermeture du classeur justement)

en effet, c'est bien ce que j'ai fait. et au moment de la fermeture, il m'ouvre la fenêtre pour l'enregistrement. et si je note rien il me dit erreur d'exécution '9' : l'indice n'appartient pas à la sélection

cdt

Ah d'accord, l'exécution a provoqué un bug ?!

Je pense que la feuille "virement" n'existe pas. Il faut corriger ça dans le code ou renommer la feuille en question "virement".

En cas de nouveau bug, merci de m'indiquer le message d'erreur et la ligne lors du débogage.

Cdlt,

Bonjour,

merci pour votre retour. en effet, j'avais fait une faute de frappe dans ma feuille... après avoir fait la modification il me dit que le dossier est introuvable.

je suis navré de vous bloquer avec tout ça.

Cdt

Bonjour,

On y est presque. Il faut aussi se faire un peu confiance. Si le message dit que le dossier est introuvable, alors c'est qu'il est introuvable ou éventuellement que vous n'avez pas d'autorisation (même si j'en doute car le message d'erreur dans ce cas est "Permission refusée", si je ne m'abuse).

Essayez avec :

srep = thisworkbook.path

à la place du chemin en dur.

Puis s'il faut un chemin précis, essayez de le taper correctement dans le code, ce n'est que ça. Le seul détail est qu'il ne faut pas d'antislash à la fin.

Cdlt,

Rechercher des sujets similaires à "enregistrer pdf chemin acces"