XL 2019 Changer chemin d'accès VBA

angelusr71

XLDnaute Nouveau
Bonjour,

J'ai un fichier qui me permet de générer directement des PDF à partir des feuilles excel.
Je souhaiterais pouvoir générer ces pdfs dans un dossier qui ne se trouve pas là ou est mon document excel.

Je m'explique, mon document excel est enregistré dans D:\Agents\
Les fichiers pdf sont générés dans D:\Agents\DossierPDFs

Je souhaiterais que les fichiers PDF soient générés dans C:\Fiches Agents par exemple.

Comment faut-il modifier mon code pour que ça fonctionne ?

Merci d'avance pour vos retours.
 

Pièces jointes

  • TEST - Listing RH septembre 2022 - TEST.xlsm
    138.5 KB · Affichages: 6

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
Tu le fais entrer par l'utilisateur ( si ça change souvent )
un extrait d'un de mes fichiers :
VB:
chemin = InputBox("Indiquer le chemin complet du Repertoire des fiches vendeurs" _
& Chr(13) & Chr(13) & "Exemple C:\Serveur1\Data\Projets" & Chr(13) & _
"Les Majuscules ou Minuscules n'ont pas d'importance")

'---------------------------------------------------------
' On va traiter si le chemin est CORRECT , sinon on pourra recommencer OU
' Quitter la Sub

Direction = Dir(chemin & "\*.xlsx")
If Direction = "" Then
mes = MsgBox(" Le chemin entré est erroné ou ne comporte pas" & Chr(13) & _
" de fichiers Excel", vbOKCancel)
If mes = vbCancel Then alors = MsgBox(" voulez vous quitter l'application ?", vbYesNo)
If alors = vbYes Then
Exit Sub
Else
GoTo deb
End If
End If
' Fin du traitement de Verification du Chemin
'-------------------------------------------------

A toi de traiter le reste
 

vgendron

XLDnaute Barbatruc
Hello
il te suffit de demander le répertoire de sauvegarde

VB:
Sub recuppath()
With Application.FileDialog(msoFileDialogFolderPicker)
  .Title = "Selection d'un répertoire"
  .InitialFileName = StrPath
  .Show
   Select Case .SelectedItems.Count
     Case Is > 0: SelectedFolder = .SelectedItems(1)
     Case Else: SelectedFolder = ""
   End Select
  End With
  GetFolder = SelectedFolder
MsgBox "le répertoire de sauvegarde est : " &GetFolder
End Sub
 

angelusr71

XLDnaute Nouveau
Merci pour vos réponses mais je suis une quiche absolue...
Je ne sais pas du tout comment appliquer vos solutions. Je n'ai pas réalisé le fichier et mes connaissances en VB sont très très limitées.
Tous les codes présents, pour être très honnête, je n'y comprends rien...je vais quand même essayer de l'appliquer à mon document.
En tout cas merci pour vos retours !!!
 

vgendron

XLDnaute Barbatruc
ta macro devient ca
VB:
Sub ExportFeuilleEnPdf()
Dim LHeure$, LaDate$, Chemin$, NomFichier$, NomFeuille$, CheminComplet$
Application.ScreenUpdating = False
If Not shexists(ActiveCell.Value) Then  ' Sécurité si la feuille n'existe pas.
    MsgBox "Cette feuille n'existe pas."
    Exit Sub
End If
' Sélection de la feuille
Sheets(ActiveCell.Value).Activate
' Construction du nom de fichier
LHeure = Format(Time, "HH.MM")
LaDate = Format(Date, "dd" & "." & "mm" & "." & "yyyy")
Chemin = ThisWorkbook.Path & "\"
If MsgBox("sauvegarde dans le répertoire: " & Chemin, vbYesNo) = vbNo Then
    With Application.FileDialog(msoFileDialogFolderPicker)
  .Title = "Selection d'un répertoire"
  .InitialFileName = StrPath
  .Show
   Select Case .SelectedItems.Count
     Case Is > 0: SelectedFolder = .SelectedItems(1)
     Case Else: SelectedFolder = ""
   End Select
  End With
  Chemin = SelectedFolder & "\"
End If
NomFichier = Split(ThisWorkbook.Name, ".")(0)
NomFeuille = ActiveSheet.Name
' Construction du chemin complet
CheminComplet = Chemin & NomFichier & " " & NomFeuille & " " & LaDate & " " & LHeure & ".pdf"
' Création fichier PDF

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminComplet, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False
' Message de confirmation
MsgBox ("Création du fichier PDF effectué" & vbCrLf & vbCrLf & CheminComplet)
' Retour au Listing
Sheets("Listing").Activate
End Sub

par contre: ca te demandera le répertoire à chaque fois..

edit: salut @herve62
 

angelusr71

XLDnaute Nouveau
Merci pour ton retour !
Ce n'est pas grave que ça demande le répertoire à chaque fois. Par contre j'ai modifié le nom du fichier pour que le PDF s'enregistre avec le nom de la feuille.

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminComplet NomFeuille

Je ne sais pas si ça vient de ça mais à chaque fois que je génère le PDF, il ne me l'enregistre pas tout à fait au bon endroit.

Exemple, lorsque je lui demande de me l'enregistrer dans D:\Dossier X\Fiches perso
et bien il me l'enregistre dans Dossier X au lieu de fiches perso...
 

angelusr71

XLDnaute Nouveau
Merci pour ton retour !
Ce n'est pas grave que ça demande le répertoire à chaque fois. Par contre j'ai modifié le nom du fichier pour que le PDF s'enregistre avec le nom de la feuille.

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CheminComplet NomFeuille

Je ne sais pas si ça vient de ça mais à chaque fois que je génère le PDF, il ne me l'enregistre pas tout à fait au bon endroit.

Exemple, lorsque je lui demande de me l'enregistrer dans D:\Dossier X\Fiches perso
et bien il me l'enregistre dans Dossier X au lieu de fiches perso...
C'est sûr que c'est ce changement qui pose problème...j'ai effectué plusieurs test mais je ne vois pas d'oùvient le problème...
 

vgendron

XLDnaute Barbatruc
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:.....

FileName.. contrairement à ce que le nom peut laisser penser. il s'agit du nom du fichier AVEC TOUT le chemin

il faut donc que Filename=CheminComplet & NomFeuille
avec CheminComplet = d:\....\
et NomFeuille= Nomfichier.pdf
 

vgendron

XLDnaute Barbatruc
pourquoi as tu modifié ?

pour enregistrer un fichier: il faut
1) le nom du fichier avec son extension exemple : TEST.pdf
2) le répertoire dans lequel tu veux enregister le fichier==> on appelle ca en général le CHEMIN
exemple: D:\Agents\DossierPDFs\ ==> il ne faut pas oublier le dernier caractère "\"

l'instruction VBA qui permet d'enregistrer le fichier à sa place
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=CHEMINCOMPLET

le CHEMINCOMPLET est constitué du CHEMIN ET du NOM de fichier
CHEMINCOMPLET=CHEMIN & NOM

donc. si tu souhaites changer le nom du fichier, ce n'est pas la ligne qui enregistre qu'il faut modifier. comme tu l'as fait, mais c'est la ligne qui remplit la variable CHEMINCOMPLET

et dans ton cas. plus précisemment, celle qui remplit construit le chemin complet
VB:
' Construction du chemin complet
CheminComplet = Chemin & NomFichier & " " & NomFeuille & " " & LaDate & " " & LHeure & ".pdf"

ca deviendrait (si j'ai bien compris)

Code:
CheminComplet = Chemin &  NomFeuille & " " & LaDate & " " & LHeure & ".pdf
 

angelusr71

XLDnaute Nouveau
Parfait merci, c'est exactement ça que je voulais !!
Par contre, je ne sais pas si c'est lié mais lorsque je créé une fiche ça me met une erreur d'exécution 1004 et je n'arrive pas non plus à trouver comment régler le problème...

En tout cas merci encore pour ton aide, ça m'aide beaucoup !
 

Discussions similaires