Enregistrer une plage de cellules en PDF à la fermeture d'un fichier

Arnold35

XLDnaute Junior
Bonjour à tous,

Débutant en VBA, je cherche à sélectionner une plage de cellules en fonction d'une date (macro réussie), puis la définir en tant que zone d'impression mise en forme sur 1 page. Lorsque la personne fermera le fichier, je souhaiterai qu'une macro se déclenche afin d'enregistrer la sélection sous format PDF puis la stocker dans un répertoire (afin de conserver une trace non modifiable de la sélection en question).

Après plusieurs recherches sur Développez.com j'ai trouvé des bouts de macro pour la selection mais je n'arrive pas à définir la zone d'impression et la mise en page ainsi que l'enregistrement au format PDF dans un dossier tiers.

Avez vous des conseils pour m'aider?

Merci d'avance à vous
 

Pièces jointes

  • Main Courante Essai 2.zip
    180.5 KB · Affichages: 46

cathodique

XLDnaute Barbatruc
Re : Enregistrer une plage de cellules en PDF à la fermeture d'un fichier

Bonjour,

Pour la zone d'impression et la mise en page, utilise l'enregistreur de macro.

Pour l'enregistrement à la fermeture du fichier, clique sur ThisWorkbook, dans la liste déroulante de gauche sélectionne workbook, et dans la liste déroulante de gauche sélectionne "Workbook_BeforeClose" d'où Tu feras appel à la macro qui crée le pdf.

Pour le pdf, tu trouveras cette discussion. Pas beaucoup de temps pour t'aider.

J'ai ouvert ton fichier, tu utilises pdfcreator. personnellement, je travaille avec un complément de Microsoft 'SaveAsPDFandXPS' que tu trouveras en téléchargement.
 
Dernière édition:

Arnold35

XLDnaute Junior
Re : Enregistrer une plage de cellules en PDF à la fermeture d'un fichier

Super.

Je crois que ça fonctionne.

J'ai juste un souci qui est que je souhaiterais nommer le pdf avec le contenu de la cellule C1 et la de la cellule H2 (date du jour).

Or on ne peut pas avoir de format date dans le nom d'un fichier.

Avez vous une astuce?

Merci
 

Pièces jointes

  • Main Courante Essai 3.zip
    181.8 KB · Affichages: 43

cathodique

XLDnaute Barbatruc
Re : Enregistrer une plage de cellules en PDF à la fermeture d'un fichier

VB:
Dim Nom As String
Nom = Sheets("nomFeuille").Range("C1") & "-" & Sheets("nomFeuille").Range("H2")
Chemin = "C:\Users\arnold.daviau\Desktop"
Fich = CreateObject("Scripting.FileSystemObject").GetBaseName(Nom)
CheminComplet = Chemin & "\" & Fich & ".pdf"
Rep = Dir(Chemin & "\" & Fich & ".pdf")

Comme ça à tester, je ne travaille pas avec pdfCreator
 

Arnold35

XLDnaute Junior
Re : Enregistrer une plage de cellules en PDF à la fermeture d'un fichier

Je viens d'essayer mais cela ne fonctionne pas.

Code:
Sub ImprimPdf()

Dim Nom As String
Dim Chemin As String
Dim Fich As String
Dim Rep As String
Dim CheminComplet As String

Call Selection


Nom = Range("C1") & "-" & Range("H2")
Chemin = "C:\Users\arnold.daviau\Desktop"
Fich = CreateObject("Scripting.FileSystemObject").GetBaseName(Nom)
'Fich = CreateObject("Scripting.FileSystemObject").GetBaseName(ThisWorkbook.Name)
CheminComplet = Chemin & "\" & Fich & ".pdf"
Rep = Dir(Chemin & "\" & Fich & ".pdf")
 
If Rep = "" Then
    réponse = MsgBox("Le fichier n'existe pas, création du fichier PDFCreator", vbYesNo)
    If réponse = vbYes Then
Impression:
       ChDir Chemin
       ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Rep, _
       Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
       :=False, OpenAfterPublish:=False 'n'affiche pas le fichier PDF
    Else
        MsgBox "Sortie de la procédure"
        Exit Sub
    End If
 

cathodique

XLDnaute Barbatruc
Re : Enregistrer une plage de cellules en PDF à la fermeture d'un fichier

Désolé, je n'ai pas testé car je travaille avec SaveAsPDFandXPS.

peut-être comme ceci
VB:
Nom = Range("C1") & "-" & Range("H2")
Chemin = "C:\Users\arnold.daviau\Desktop"
CheminComplet = Chemin & "\" & Nom & ".pdf"
Rep = Dir(Chemin & "\" & Fich & ".pdf")
à tester
 

cathodique

XLDnaute Barbatruc
Re : Enregistrer une plage de cellules en PDF à la fermeture d'un fichier

Bingo, t'as trouvé. Dans quelle cellule se trouve la date?
VB:
Nom = Range("C1") & "-" & Replace(Range("H2"),"/","_")
à adapter
 
Dernière édition:

Arnold35

XLDnaute Junior
Re : Enregistrer une plage de cellules en PDF à la fermeture d'un fichier

Merci, j'ai inséré le code mais cela ne fonctionne toujours pas.

Je pense que cela provient du code pdf mais je ne suis pas sur.

Code:
Nom = Range("C1") & "-" & Replace(Range("H2"), "/", "_")
Chemin = "C:\Users\arnold.daviau\Desktop"
Fich = CreateObject("Scripting.FileSystemObject").GetBaseName(Nom)
'Fich = CreateObject("Scripting.FileSystemObject").GetBaseName(ThisWorkbook.Name)
CheminComplet = Chemin & "\" & Fich & ".pdf"
Rep = Dir(Chemin & "\" & Fich & ".pdf")
 
If Rep = "" Then
    réponse = MsgBox("Le fichier n'existe pas, création du fichier PDFCreator", vbYesNo)
    If réponse = vbYes Then
Impression:
       ChDir Chemin
       ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, [COLOR="#FF0000"]Filename:=Rep[/COLOR], _
       Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
       :=False, OpenAfterPublish:=False 'n'affiche pas le fichier PDF
    Else
        MsgBox "Sortie de la procédure"
        Exit Sub
    End If
 

cathodique

XLDnaute Barbatruc
Re : Enregistrer une plage de cellules en PDF à la fermeture d'un fichier

Bonjour,

Désolé, je ne peux pas t'aider. Installe le complément SaveAsPDFandXPS que tu trouveras sur le site de Microsoft. Ensuite, reviens pour la solution.

Pour le nom du fichier tu as mis-----> Nom = Range("C1") & "-" & Range("H2") mais tu ne spécifies pas la feuille alors que tu en as 2.

De plus comment est-ce que tu exécutes la macro (raccourci, bouton, ...)?

à+;)
 
Dernière édition:

Discussions similaires

M
Réponses
9
Affichages
477
Maikales
M

Statistiques des forums

Discussions
312 234
Messages
2 086 468
Membres
103 226
dernier inscrit
smail12