Enregistrement en macro en pdf en créant un nouveau dossier

Bonjour à vous

J'ai une petite question à vous demander !

J'ai actuellement cette macro qui fonctionne très bien pour enregistrer un pdf (dans le dossier où est enregistré le fichier Excel) :

Sub pdf()

Dim Ar(2) As String

    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & ActiveSheet.Range("B7").Value & ".pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False

End Sub

Cependant, concernant l'enregistrement dans le répertoire j'aimerai :

  • que la macro crée un dossier en le nommant "donnees"
  • À l'intérieur de celui-là, il faut que la macro crée un sous-dossier avec un nom qui dépend du texte présent dans une cellule (exemple : "validation 2016-12-07")
  • Puis encore à l'intérieur de ce sous-dossier, créer un dossier avec un nom défini "extraction"
  • Il faut bien entendu que la macro ne crée aucun dossier ou de sous-dossier s'il existe déjà bien évidemment

Pour simplifier : la macro enregistre le pdf dans l'arborescence suivant : Dans le dossier actuel du fichier Excel (qui peut être déplacé) il y a un dossier nommé "donnees". À l'intérieur il faut créer un dossier qui se nomme avec la date du jour "validation 2016-12-07" puis un autre sous-dossier avec un nom défini (exemple "extraction").

Je sais que c'est techniquement faisable, mais... je sèche !

Avez-vous une solution ?

En vous remerciant,

Nicolas

Bonjour,

un petit coup d’œil aux liens suivant et ton problème est résolu !

http://excel-malin.com/codes-sources-vba/vba-verifier-si-dossier-existe/

http://excel-malin.com/codes-sources-vba/creation-dossiers-et-sous-dossiers-en-vba/

A ta disposition si tu as besoin de plus d'infos

A plus.

Merci pour ta réponse

Je sèche par contre pour réunir les liens que tu m'as communiqués afin que ça réalise le tout.

Est-ce que c'est faisable ce mix ?

Merci en tout cas pour ta réponse !

Voici un code à tester, en pensant à modifier le chemin du premier dossier (Celui de "Donnees") que je considère comme étant déjà créée :

Public Function DossierExiste(MonDossier As String)

   If Len(Dir(MonDossier, vbDirectory)) > 0 Then
      DossierExiste = True
   Else
      DossierExiste = False
   End If
End Function

Sub TesteSiDossierExiste()

Dim MonDossier As String

MonDossier = "C:\...\Donnees\Validation" & Day(Date) & "." & Month(Date) & "." & Year(Date)

    If DossierExiste(MonDossier) = True Then

        MkDir ("C:\...\Donnees\Validation" & Date & "\Extraction")

        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & ActiveSheet.Range("B7").Value & ".pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False

    Else

        MkDir ("C:\...\Donnees\Validation" & Day(Date) & "." & Month(Date) & "." & Year(Date))
        MkDir ("C:\...\Donnees\Validation" & Day(Date) & "." & Month(Date) & "." & Year(Date) & "\Extraction")

        ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & ActiveSheet.Range("B7").Value & ".pdf" _
        , Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
        :=False, OpenAfterPublish:=False

    End If

End Sub

bonsoir a vous

voici un code qui permet d'enregistrer en .pdf dans un dossier qu'il créer en même temps avec le nom du mois et les derniers chiffres de l'année en cours,si le dossier n'existe pas,il le créer et créer un dossier a chaque changement de mois mais le dossier créer reste actif le mois durant

    Private Sub CommandButton1_Click()
      Application.DisplayAlerts = False
      Dim Chemin As String, Fichier As String, Rep As String
      Chemin = "C:\Users\vous-même\Desktop\Nouveau dossier\"'======chemin a changer
     'Chemin = ThisWorkbook.Path & "\"
     'créer un dosier avec le nom du mois et l'année en cours
     'si le mois change un autre dossier est créer
      Rep = Application.Proper(MonthName(Month(Date))) & " " & Year(Date)
      'gestion des erreurs
      On Error Resume Next
      'définition du chemin
      MkDir Chemin & Rep
      On Error GoTo 0
      Chemin = Chemin & Rep & "\"
      Sheets("Feuil1").Copy
      'copie de la feuille en ajoutant F devant le n° qui est en "C4" et +la date
      Fichier = Sheets("Feuil1").Range("C4") & " " & "F" & Format(Date, "ddmmyyyy") & ".Pdf"
      With ActiveWorkbook
      'code qui enregistre en .pdf
        .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Fichier, Quality:=xlQualityStandard, _
                              IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                              From:=1, To:=1, OpenAfterPublish:=False
        'ferme le classeur créer
       .Close savechanges:=False
       'retabli les arlertes windows
        Application.DisplayAlerts = True
        'message pour dire que le fichier a bien été enregistrer
        'que le chemin est bon
        MsgBox ("Enregistré dans le dossier -Factures-")
      End With
    End Sub
Rechercher des sujets similaires à "enregistrement macro pdf creant nouveau dossier"