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

Y compris Power BI, Power Query et toute autre question en lien avec Excel
y
youpou
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 7 décembre 2016
Version d'Excel : 2007

Message par youpou » 7 décembre 2016, 12:12

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
Modifié en dernier par youpou le 7 décembre 2016, 13:26, modifié 1 fois.
B
Braters
Membre dévoué
Membre dévoué
Messages : 580
Appréciations reçues : 10
Inscrit le : 23 décembre 2015
Version d'Excel : 2013 FR

Message par Braters » 7 décembre 2016, 12:25

Bonjour,

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

http://excel-malin.com/codes-sources-vb ... er-existe/

http://excel-malin.com/codes-sources-vb ... rs-en-vba/

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

A plus.
:btres:
y
youpou
Nouveau venu
Nouveau venu
Messages : 2
Inscrit le : 7 décembre 2016
Version d'Excel : 2007

Message par youpou » 7 décembre 2016, 13:27

Braters a écrit :Bonjour,

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

http://excel-malin.com/codes-sources-vb ... er-existe/

http://excel-malin.com/codes-sources-vb ... rs-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 ? :D

Merci en tout cas pour ta réponse ! ;)
B
Braters
Membre dévoué
Membre dévoué
Messages : 580
Appréciations reçues : 10
Inscrit le : 23 décembre 2015
Version d'Excel : 2013 FR

Message par Braters » 7 décembre 2016, 14:53

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
:btres:
Avatar du membre
grisan29
Membre impliqué
Membre impliqué
Messages : 1'266
Inscrit le : 26 janvier 2010
Version d'Excel : 2013 pro FR

Message par grisan29 » 7 décembre 2016, 20:33

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
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message