Microsoft 365 Pdf et Création Dossier

eric72

XLDnaute Accro
Bonjour à tous,
J'aimerais à partir de mon fichier, imprimer en Pdf dans un repertoire DOSSIERS CLIENT qui se trouve dans le repertoire de mon fichier "Test pdf", puis créer un sous dossier qui représenterait l'année en cours.
J'ai cherché partout mais ne trouve pas ma solution.
Je m'en remet donc à votre savoir encore une fois.
Merci à tous
Eric
 

Pièces jointes

  • test pdf.xlsm
    25.6 KB · Affichages: 2
Solution
Re Bonjour à tous,

J'ai essayé avec ce code avec un inputbox, après avoir créer un sous dossier "2023",
Pas d'erreur la macro se déroule normalement mais je ne trouve pas le fichier "TOTO.Pdf"
VB:
Sub test()
Do
NomDossier = Application.InputBox("Saisir Année d'Archive:", "Année ?", Year(Date), 1)
Loop While NomDossier = ""
If NomDossier = "" Then Exit Sub 'gestion de la touche annul

If Not IsNumeric(NomDossier) Then
MsgBox ("veuillez saisir un numerique")
NomDossier = Application.InputBox("Saisir Année d'Archive:", "Année ?", Year(Date), 1)
End If

    
Chemin = Application.ActiveWorkbook.Path & "\DOSSIERS\" & NomDossier & "\"
'MsgBox Chemin
ActiveSheet.ExportAsFixedFormat Type:=xltypexlsm, Filename:= _
    Chemin & Range("a1").Value &...

patricktoulon

XLDnaute Barbatruc
Bonjour
VB:
Sub archives()
    Dim Chemin As String, Fichier As String, c$, t, I&
    Chemin = Application.ActiveWorkbook.Path & "\DOSSIERS CLIENT\" & Year(Date)    '======chemin a changer
    
    'l 'existence du chemin  du dossier va être controlé  etage par etage ; les etages seront eventuellement créés si ils n'existent pas
    t = Split(Chemin, "\"):    c = t(0)
    For I = 1 To UBound(t)
        c = c & "\" & t(I)
        If Dir(c, vbDirectory) = "" Then MkDir (c)
    Next

    
    Fichier = "PlanningSSS dE" & " " & Sheets("Feuil1").Range("a1") & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                    Filename:=Chemin & "\" & Fichier, _
                                    Quality:=xlQualityStandard, _
                                    IncludeDocProperties:=True, _
                                    IgnorePrintAreas:=False, _
                                    OpenAfterPublish:=False

End Sub
 

eric72

XLDnaute Accro
Bonjour
VB:
Sub archives()
    Dim Chemin As String, Fichier As String, c$, t, I&
    Chemin = Application.ActiveWorkbook.Path & "\DOSSIERS CLIENT\" & Year(Date)    '======chemin a changer
   
    'l 'existence du chemin  du dossier va être controlé  etage par etage ; les etages seront eventuellement créés si ils n'existent pas
    t = Split(Chemin, "\"):    c = t(0)
    For I = 1 To UBound(t)
        c = c & "\" & t(I)
        If Dir(c, vbDirectory) = "" Then MkDir (c)
    Next

   
    Fichier = "PlanningSSS dE" & " " & Sheets("Feuil1").Range("a1") & ".pdf"
    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                    Filename:=Chemin & "\" & Fichier, _
                                    Quality:=xlQualityStandard, _
                                    IncludeDocProperties:=True, _
                                    IgnorePrintAreas:=False, _
                                    OpenAfterPublish:=False

End Sub
Bonjour Patrick,
Merci beaucoup pour ton retour, j'ai testé mais j'ai une erreur ici:
VB:
        If Dir(c, vbDirectory) = "" Then MkDir (c)
avec ce commentaire "Nom ou numéro de fichier incorrect"
Est-ce que le fait que je sois sur OneDrive peut avoir un rapport?
Merci
 

patricktoulon

XLDnaute Barbatruc
a ben oui il te faut determiner le chemin de onedrive
j'ai ajouté aussi le test d'existence eventuelle du fichier
avec la possibilité d'ecraser le fichier existant ou pas

te reste plus qu'a faire des recherches pour onedrive
VB:
Sub archives()
    Dim Chemin As String, Fichier As String, c$, t, I&, Rep As VbMsgBoxResult
    Chemin = Application.ActiveWorkbook.Path & "\DOSSIERS CLIENT\" & Year(Date)    '======chemin a changer

    'l 'existence du chemin  du dossier va être controlé  etage par etage ; les etages seront eventuellement créés si ils n'existent pas
    t = Split(Chemin, "\"): c = t(0)
    For I = 1 To UBound(t)
        c = c & "\" & t(I)
        If Dir(c, vbDirectory) = "" Then MkDir (c)
    Next


    Fichier = "PlanningSSS dE" & " " & Sheets("Feuil1").Range("a1") & ".pdf"

    If Dir(Chemin & "\" & Fichier) <> "" Then Rep = MsgBox("<<" & Fichier & ">>" & vbCrLf & "Un fichier postant ce nom existe déjà" & vbCrLf & "Voulez vous l'ecraser", vbYesNo)
    If Rep = vbNo Then Exit Sub

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                    Filename:=Chemin & "\" & Fichier, _
                                    Quality:=xlQualityStandard, _
                                    IncludeDocProperties:=True, _
                                    IgnorePrintAreas:=False, _
                                    OpenAfterPublish:=False

End Sub
 

eric72

XLDnaute Accro
a ben oui il te faut determiner le chemin de onedrive
j'ai ajouté aussi le test d'existence eventuelle du fichier
avec la possibilité d'ecraser le fichier existant ou pas

te reste plus qu'a faire des recherches pour onedrive
VB:
Sub archives()
    Dim Chemin As String, Fichier As String, c$, t, I&, Rep As VbMsgBoxResult
    Chemin = Application.ActiveWorkbook.Path & "\DOSSIERS CLIENT\" & Year(Date)    '======chemin a changer

    'l 'existence du chemin  du dossier va être controlé  etage par etage ; les etages seront eventuellement créés si ils n'existent pas
    t = Split(Chemin, "\"): c = t(0)
    For I = 1 To UBound(t)
        c = c & "\" & t(I)
        If Dir(c, vbDirectory) = "" Then MkDir (c)
    Next


    Fichier = "PlanningSSS dE" & " " & Sheets("Feuil1").Range("a1") & ".pdf"

    If Dir(Chemin & "\" & Fichier) <> "" Then Rep = MsgBox("<<" & Fichier & ">>" & vbCrLf & "Un fichier postant ce nom existe déjà" & vbCrLf & "Voulez vous l'ecraser", vbYesNo)
    If Rep = vbNo Then Exit Sub

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
                                    Filename:=Chemin & "\" & Fichier, _
                                    Quality:=xlQualityStandard, _
                                    IncludeDocProperties:=True, _
                                    IgnorePrintAreas:=False, _
                                    OpenAfterPublish:=False

End Sub
Merci Patrick,
J'ai bien ce code pour un autre exemple avec OneDrive
Code:
    Chemin = Application.ActiveWorkbook.Path & "\DOSSIERS CLIENT\" & Application.PathSeparator & Year(Date)      '======chemin a changer
[/CODE]
Mais il ne fonctionne pas ici, dans l'autre cas je ne crée aucun dossier, j'enregistre juste directement sous "DOSSIERS CLIENT"
 

patricktoulon

XLDnaute Barbatruc
& "\DOSSIERS CLIENT\" & Application.PathSeparator & Year(Date)
pière de m'excuser absence pour raison de mal de tête a la vue de ce bout de code

bonjour
je ne suis pas là pour le momment pour hospitalisation suite a rupture d'anévrisme
mais vous pouvez laisser un message si vous le désirez

refléchiquestion gif.gif
 

eric72

XLDnaute Accro
pière de m'excuser absence pour raison de mal de tête a la vue de ce bout de code

bonjour
je ne suis pas là pour le momment pour hospitalisation suite a rupture d'anévrisme
mais vous pouvez laisser un message si vous le désirez

Regarde la pièce jointe 1185538
J'espère que tu vas mieux!!!
J'essaie juste de résoudre mon problème en faisant des essais, voilà le code que j'ai(mais sans créer de sous dossier) et celui-ci fonctionne même avec OneDrive ...
VB:
Dim Chemin As String
Dim NFichier As String
Application.ScreenUpdating = False

Chemin = Application.ActiveWorkbook.Path & "\PLANNING\" & Application.PathSeparator 'met le pdf au même emplacement que le fichier
NFichier = Sheets("Planning").Range("J1") & " " & "du" & " " & Format(Sheets("Planning").Range("d5"), "dd mm yyyy") & " " & "au" & " " & Format(Sheets("Planning").Range("an5"), "dd mm yyyy") & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & NFichier, Quality _
:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Application.ScreenUpdating = True
Désolé d'avoir causé un traumatisme!!! ;)
 

eric72

XLDnaute Accro
Re Bonjour à tous,

J'ai essayé avec ce code avec un inputbox, après avoir créer un sous dossier "2023",
Pas d'erreur la macro se déroule normalement mais je ne trouve pas le fichier "TOTO.Pdf"
VB:
Sub test()
Do
NomDossier = Application.InputBox("Saisir Année d'Archive:", "Année ?", Year(Date), 1)
Loop While NomDossier = ""
If NomDossier = "" Then Exit Sub 'gestion de la touche annul

If Not IsNumeric(NomDossier) Then
MsgBox ("veuillez saisir un numerique")
NomDossier = Application.InputBox("Saisir Année d'Archive:", "Année ?", Year(Date), 1)
End If

    
Chemin = Application.ActiveWorkbook.Path & "\DOSSIERS\" & NomDossier & "\"
'MsgBox Chemin
ActiveSheet.ExportAsFixedFormat Type:=xltypexlsm, Filename:= _
    Chemin & Range("a1").Value & ".pdf", quality:= _
    xlQualityStandard, includedocproperties:=True, ignoreprintareas:=False, _
    from:=1, To:=1, openafterpublish:=False

        Application.ScreenUpdating = True
End Sub
Qu'est ce que j'ai encore oublié?
Merci
 

Discussions similaires

Statistiques des forums

Discussions
315 096
Messages
2 116 182
Membres
112 677
dernier inscrit
Justine11