XL 2019 ChDir - ChDrive

gg13

XLDnaute Occasionnel
Bonsoir,

Je bute sur un problème d’enregistrement.
Je voudrai enregistrer des PDF dans des dossiers différents.
J’utilise
ChDrive (lecteur)
ChDir (Dossier)

Pour ouvrir directement le bon dossier et stocker avec
Selection.PrintOut Copies:=1, Collate:=True

Mais chaque fois la fenêtre d’enregistrement s’ouvre sur le dernier chemin utilisé alors qu’elle devrait être dirigée directement sur celui indiqué par ChDrive (lecteur) et ChDir (Dossier)

Merci de votre aide si vous pouvez me dire où est mon erreur.

GG13
 
Solution
Bonjour,

Teste ceci chez moi c'est bon.
Code trouvé sur internet

Dans la variable Chemin_Fichier, on n'est pas obligé de donner un nom de fichier, on peut ne donner que le chemin.

Dans FileFilter, si on veut des PDF, même si visiblement ça ne change rien chez moi, je pense qu'il vaut mieux utiliser pdf comme filtre : fileFilter:="PDF (*.pdf), *.pdf"


Ca pourrait donc donner quelque chose comme ceci :
VB:
Sub testPDF()
'
Dim Chemin_Fichier As String, FileSaveName As Variant

    ' Chemin (et éventuellement nom) pour le fichier à sauvegarder
    Chemin_Fichier = ThisWorkbook.Path

    FileSaveName = Application.GetSaveAsFilename( _
        InitialFileName:=Chemin_Fichier, _...

Deadpool_CC

XLDnaute Accro
Bonsoir,

Sans fichier exemple, pas facile de te répondre dans ton contexte.

moi pour un enregistrement automatique de ou des onglets sélectionnés ... je constitue le nom du fichier avec le chemin complet ... comme cela plus besoin de définir un répertoire et je génère mon pdf

VB:
            '---
            FichierPDF = CheminDuPDF & "\" & Format(DateT, "YYYY-MM-DD") & "_" & SiteChemin & ".pdf"
            ChoixEcrase = vbYes
            If Dir(FichierPDF) <> "" Then _
                ChoixEcrase = MsgBox(FichierPDF & vbCr & vbCr & "Le Fichier existe déjà ..." & vbCr & "=> Peut-on le remplacer ?" & _
                                      vbCr & vbCr & "Si oui, vérifiez qu'il n'est pas ouvert ! " & _
                                      vbCr & "Si non le pdf ne sera pas créé.", vbYesNo + vbExclamation)
                
            If ChoixEcrase = vbYes Then _
                    ActiveSheet.ExportAsFixedFormat _
                        Type:=xlTypePDF, _
                        Filename:=FichierPDF, _
                        Quality:=xlQualityStandard, _
                        IncludeDocProperties:=True, _
                        IgnorePrintAreas:=False, _
                        OpenAfterPublish:=True
                    ' si besoin, ajouter : "From:=1, To:=1," si on veut definir l'impression de la page "n" à la page "y"
            '---
 

youky(BJ)

XLDnaute Barbatruc
Bonjour
Voici un exemple à adapter
Bruno
VB:
Sub pdfENR()
chemfich = ThisWorkbook.Path & "\My_PDF\ENR " & Right(Year(Date), 2) & "_" & Format(Month(Date), "00") & "_" & Format(Day(Date), "00")
Feuil1.ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemfich & ".pdf"
End Sub
 

gg13

XLDnaute Occasionnel
Bonjour,

Désolé pour la réponse tardive.
Merci pour ces réponses qui me seront utiles mais en fait je voudrais simplement que la fenêtre
après Selection.PrintOut Copies:=1, Collate:=True
s’ouvre sur le bon dossier après

ChDir Dossier
ChDrive Lecteur

Après recherche sur le net j’ai testé aussi :

Application.DefaultFilePath = Dossier 'Path
MsgBox ActiveWorkbook.Path
ChDrive ActiveWorkbook.Path et d’autre ……

J’arrive toujours au même résultat la boite de dialogue print (pour PDF)
s’ouvre sur le dernier dossier ouvert et non celui défini par
ChDir et ChDrive (pourtant actualisés)

Je ne suis pas seul à avoir ce problème j’ai lu plusieurs post sur le net sans solution donc je suppose que ce n’est pas possible.
Merci encore pour votre aide.
Bonne semaine.
GG13
 

youky(BJ)

XLDnaute Barbatruc
Bonjour,
Le code donné Selection.PrintOut Copies:=1, Collate:=True
Cela imprime la page mais cela ne fait pas de fichier.
Pour créer un PDF il faut lui indiquer le chemin et son nom en 1er.
ChDir ThisWorkbook.Path & "\"
peut être utilisé dans le cas pour ouvrir une boite de dialogue
Bruno
 

gg13

XLDnaute Occasionnel
Bruno
Merci pour la réponse.
J'avais vu cette solution sur les posts
Mais le nom du fichier n'est pas connu avant l'ouverture de
Selection.PrintOut Copies:=1, Collate:=True
et donc ne peut pas être mémorisé par la macro.

l'utilisateur définira lui même un non d'enregistrement dans la boite de dialogue qui doit s'ouvrir sur le bon chemin, ce qui n'est pas le cas

GG13
 

youky(BJ)

XLDnaute Barbatruc
Re,
Teste ceci chez moi c'est bon.
Code trouvé sur internet ou j'ai modifié le chemin
Tu pourras dans la fenêtre de dialogue changer le nom ici toto.PDF
Bruno
VB:
Sub testPDF()
Dim Chemin_Fichier As String
'Chemin et nom que l'on veut donner au fichier
Chemin_Fichier = ThisWorkbook.Path & "\toto.pdf"
'au cas où l'usager annule au lien d'enregistrer
On Error Resume Next
Application.GetSaveAsFilename(InitialFileName:=Chemin_Fichier, _
        fileFilter:="PDF (*.pdf), *.txt", FilterIndex:=1, _
    Title:="Enregistrer sous", Buttontext:="Enregistrer") = "toto"
End Sub
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Teste ceci chez moi c'est bon.
Code trouvé sur internet

Dans la variable Chemin_Fichier, on n'est pas obligé de donner un nom de fichier, on peut ne donner que le chemin.

Dans FileFilter, si on veut des PDF, même si visiblement ça ne change rien chez moi, je pense qu'il vaut mieux utiliser pdf comme filtre : fileFilter:="PDF (*.pdf), *.pdf"


Ca pourrait donc donner quelque chose comme ceci :
VB:
Sub testPDF()
'
Dim Chemin_Fichier As String, FileSaveName As Variant

    ' Chemin (et éventuellement nom) pour le fichier à sauvegarder
    Chemin_Fichier = ThisWorkbook.Path

    FileSaveName = Application.GetSaveAsFilename( _
        InitialFileName:=Chemin_Fichier, _
        fileFilter:="PDF (*.pdf), *.pdf, TXT (*.txt), *.txt, XLSM (*.xlsm), *.xlsm", _
        FilterIndex:=3, _
        Title:="Enregistrer sous")
    If FileSaveName = False Then Exit Sub

End Sub

Mais chaque fois la fenêtre d’enregistrement s’ouvre sur le dernier chemin utilisé alors qu’elle devrait être dirigée directement sur celui indiqué par ChDrive (lecteur) et ChDir (Dossier)
Attention, ici ce n'est pas une fenêtre d'enregistrement, c'est seulement une fenêtre de dialogue pour choisir le nom et l'emplacement du fichier. ;)
 
Dernière édition:

gg13

XLDnaute Occasionnel
Toofatboy.
Super cette solution à l'air de fonctionner.
J'ai simplement modifié la valeur de
FilterIndex:=3, _ a 1 pour passer en PDF.
et remplacé
ThisWorkbook.Path par la valeur de Chdir
Merci encore et bonne soirée à tous.
GG13
 

TooFatBoy

XLDnaute Barbatruc
Au début ça va mais si on ouvre ensuite un autre dossier ChDir ne va plus.
Merci pour ta réponse. 👍

En l'occurrence, j'ai l'impression que ce n'est pas ChDir qui ne va pas, mais plutôt Application.FileDialog(msoFileDialogFolderPicker), car si je fais par exemple un Dir("*.*"), je crois que j'ai bien le bon résultat.

Mais je ne suis vraiment pas certain d'avoir tout compris... ce sont des choses un pneu compliquées pour oim. :(
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16