Macro enregistrement pdf dossier spécifique

Fermé
Fulerty - Modifié le 18 janv. 2023 à 11:48
 Fulerty - 20 janv. 2023 à 17:49

Bonjour,

J'ai une macro qui me permet de faire un PDF d'une plage prédéfinie et de l'enregistrer dans un dossier prévu pour. Puis d'actualiser cette plage à l'aide d'un menu déroulant et de répéter l'opération.

Elle marche très bien, j'aimerai juste pousser le bouchon plus loin en lui demandant quand elle enregistre un fichier avec nom = CCM par exemple, alors elle cherche si il y a un dossier qui a le même nom, si oui elle l'enregistre dedans, sinon elle le crée et l'enregistre dedans.

Je suis pas expert, je bidouille juste quelques trucs et je suis arrivé à cela, et depuis je bloque, mon MkDir ne marche pas.

Pouvez-vous m'aider svp ?

Sub Impression_PDF_Janvier()

Dim cell As Range
For Each cell In Range("TRANSPORTEUR")
Range("LISTE1").Value = cell
Application.Run ("pdf_janvier")
Next cell
MsgBox ("Terminé")
End Sub


Sub pdf_janvier()

Sheets("Edition transporteurs").Select
Dim GestionFichier As New Scripting.FileSystemObject
' On commence par définir une variable de type Folder :
Dim Dossier As Folder, res As String, CodeTPT As String, chemin As String
Dim Creation As String
Dim Mon_Transporteur As String
Mon_Transporteur = Range("LISTE1").Value
Application.Goto Reference:="SUIVI1"
CodeTPT = ActiveSheet.Range("G260")
nomTPT = ActiveSheet.Range("I260").Value
nomfichier = CodeTPT & "-" & nomTPT & ".pdf"
chemin = "C:\Users\mb\Test"

' Cette boucle parcourt tous les dossiers
For Each Dossier In GestionFichier.GetFolder(chemin).SubFolders
res = Left(Dossier.Name, CodeTPT)
If res = CodeTPT Then


Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
nomfichier & ".pdf", Quality:= _
xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
From:=1, To:=1, OpenAfterPublish:=False _

Set GestionFichier = Nothing
Exit Sub
End If
Next
' si le dossier n'existe pas création
Creation = chemin & CodeTPT & " - " & nomTPT & "\"
MkDir (Creation)
Set GestionFichier = Nothing
End If


End Sub


Windows / Edge 108.0.1462.76

A voir également:

25 réponses

Re,

Quelle est la différence avec mon code ? Je veux un enregistrement dans tous les cas, qu'il y ai le dossier ou non :(

0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
19 janv. 2023 à 17:12

Re,

Quelle est la différence avec mon code ?

c'est le code que vous avez mis dans le post <16>

Vous devriez mettre a diso le code que vous utilisez actuellement si vous l'avez modifie

0

Re,

C'est mon code actuellement utilisé. Il marche ! Il crée les dossiers s'ils n'existent pas, puis enregistre dedans. C'est top.

Ce qui marche pas, c'est quand le dossier existe déjà, là ça bug et ça ne fait pas l'enregistrement dans le dossier souhaité.

Je ne suis peut-être pas clair 

0

C'est à dire ? COmment corriger cela ?

0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
19 janv. 2023 à 18:10

Re,

If Dir(FolderPath, vbDirectory) = "" Then     'creation si existe pas
        MkDir FolderPath        
end if  
        'enregistrement  
        ChDir FolderPath
        Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=nomFichier & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        from:=1, To:=1, OpenAfterPublish:=False


'ou Chemin complet dans Filename

    If Dir(FolderPath, vbDirectory) = "" Then
            MkDir FolderPath
    End If
    Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=FolderPath & "\" & nomFichier & ".pdf", Quality:= _
    xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
    from:=1, To:=1, OpenAfterPublish:=False
1

Waouh, la première marche à la perfection. La deuxième quant à elle me fait une erreur 1004 et ne parvient pas à enregistrer le PDF. Mais la première marche !!!!

Merci beaucoup beaucoup pour votre temps et votre patience :D C'est trop bien !

0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710
Modifié le 20 janv. 2023 à 07:26

Bonjour,

Refaites le point d'arret pour voir.

Vous le mettrez avant de lancer. A l'arrêt du premier tour, vous relancez par le bouton triangle du menu fenêtre VBA et vous aurez l'arrêt du code au tour suivant

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question

Bonjour,

Je l'essaierai lundi ou mardi.

En tout cas, la première version marche à merveille, j'ai adapté celle-ci à d'autres macros et tous mes fichiers viennent dans le dossier et c'est merveilleux ! Sur une si grosse quantité de fichier et dossier à générer, le gain de temps est énorme.

Merci beaucoup!

0