Macro enregistrer en pdf feuille excel avec nom d'une cellule contenant formule

OIiv109

XLDnaute Nouveau
Bonjour,

Je cherche une macro pour enregistrer la feuille nommée "GAM" en pdf et qu'elle soit enregistrée avec le nom d'une cellule qui contient une formule pour faire apparaître le nom du fichier souhaité en pdf

J'ai trouvé une macro qui fait presque tout, SAUF que le fichier pdf ne se nomme pas en fonction de ma cellule (dans mon fichier cellule "AB5")

Quelqu'un pourrait-il m'aider car la je sèche.

Ci-joint mon fichier et ci-dessous la macro.


Sub EnrPDF()
'
' EnrPDF Macro
' Sauvegarder la feuille en PDF

Dim a$
'a$ = ActiveSheet.Name
a$ = Range("AB5").Value
ChDir ThisWorkbook.Path
ActiveSheet.Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\Fichier_" & a$ & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub
 

Pièces jointes

  • Fiche avoir-cession interne .xlsm
    237.5 KB · Affichages: 27
Solution
Bonsoir

Merci don_pets
Mais mon message était d'abord à destination du demandeur...
Si jamais il revient dans son fil, qu'il sache que j'ai bien pris une douche ce jour et que brossées sont mes dents.
Mais pas sur que ces considérations hygiénistes me rendent plus visible à ses yeux pour autant ;)

don_pets

XLDnaute Occasionnel
Hello,

Une solution
VB:
    ' Enregistrer Feuille sous format PDF avec date dans le nom
Dim LaDate$, Nom$, Rep$
Dim Cancel As Boolean

LaDate = Format(Now, "yyyy_mm_dd")
Nom = "Feuil1"
Rep = "Chemin\"

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Nom & "_" & LaDate & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, From:=1, To:=1, OpenAfterPublish:=False
ActiveWorkbook.Saved = True
MsgBox ("Enregistrement effectué")

Application.Quit

Enjoy
 

OIiv109

XLDnaute Nouveau
Merci de ta réponse
mais en fait dans ma macro j'ai juste besoin que le nom de mon fichier pdf soit celui du résultat de la formule de la cellule AB5 de mon fichier.

Dans ma macro, quand je mets une cellule qui ne comporte pas de formule cela fonctionne.
 

don_pets

XLDnaute Occasionnel
Si ce n'est que ça, alors tu devrais juste modifier ta macro de manière à copier coller le résultat (et non la formule) par exemple :
VB:
Dim a$
a$ = ActiveSheet.Name
Range("AB5").copy
Range("AC5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
a$ = Range("AC5").Value

par exemple
 

OIiv109

XLDnaute Nouveau
Dernière problématique pour mon fichier j'ai mis une image et j'ai affecter ma macro mais cela ne marche pas quand je protège mon fichier.

Je suis obligé de protéger le fichier avec que certaines cellules en accès


Merci de ton aide
 

Staple1600

XLDnaute Barbatruc
Bonsoir

Une autre syntaxe possible
(testée sur Excel 2013)
Code:
Sub test()
Dim Fichier$
With ActiveSheet
  Fichier = ActiveWorkbook.Path & "\" & .[A1].Value2
  .ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier & ".pdf", Quality:=xlQualityStandard
End With
ThisWorkbook.Close True
End Sub
PS: En A1, j'avais pour faire mon test cette formule:=TEXTE(AUJOURDHUI();"mmmmaaaaa")
 

don_pets

XLDnaute Occasionnel
hello,

pour créer un nouveau mail avec ton classeur en PJ tu peux faire
VB:
Application.Dialogs _
(xlDialogSendMail).Show

et sinon pour créer un nouveau mail tu peux partir aussi la dessus :

VB:
Set myOlApp = CreateObject("Outlook.Application")
Set myitem = myOlApp.CreateItem(olMailItem)
    With myitem
.Subject = "Tralala" '->ton objet'
.Recipients.Add "plouf@truc.com"  '-> detinataire'
.Attachments.Add "TonChemin\tonfichier" '-> ta PJ
.Body = "bla bla bla" '-> ton blabla

myitem.Display
    End With

Enjoy
 

don_pets

XLDnaute Occasionnel
hm le problème c'est que si tu protèges ton fichier et que ta zone de lancement de macro se trouve sur une zone protégée ...

ouvre une cellule supplémentaires dans ta zone "libre" et déclenche ta macro avec par exemple ou un double clic dessus ou un clic droit
 

OIiv109

XLDnaute Nouveau
Merci beaucoup pour ta réponse par contre concernant le mail ta première proposition marche bien mais elle ajoute le fichier en pièce jointe en excel.

Je souhaiterais que le fichier soit en pdf.

Dans ma macro d'ailleurs, le fichier s'ouvre et s'enregistre en pdf, ne peut pas avoir une macro qui met uniquement le fichier pdf en pièce jointe plutôt que l'ouvrir et l'enregistrer ?

ci-dessous ma macro

Sub EnrPDF()
'
' EnrPDF Macro
' Sauvegarder la feuille en PDF

Dim a$
'a$ = ActiveSheet.Name
a$ = ActiveSheet.Name
Range("AB5").Copy
Range("AC5").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
a$ = Range("AC5").Value
ChDir ThisWorkbook.Path
ActiveSheet.Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & a$ & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
True
End Sub
Sub MacroavecfeuilleProtect()
Dim protégé As Boolean

protégé = ActiveSheet.ProtectContents
If protégé Then ActiveSheet.Unprotect "GAM12121971"
'Placez ici vos instructions
If protégé Then ActiveSheet.Protect "GAM12121971", True, True, True
End Sub
 

don_pets

XLDnaute Occasionnel
Yes c'est pour ça que je t'ai filé une autre commande qui te permet d'aller faire pointer en PJ le doc que tu veux

VB:
Set myOlApp = CreateObject("Outlook.Application")
Set myitem = myOlApp.CreateItem(olMailItem)
    With myitem
.Subject = "Tralala" '->ton objet'
.Recipients.Add "plouf@truc.com"  '-> detinataire'
.Attachments.Add "TonChemin\tonfichier" '-> ta PJ
.Body = "bla bla bla" '-> ton blabla

myitem.Display
    End With
 

don_pets

XLDnaute Occasionnel
Ok,

fut un temps j'avais crée ça. Dans l'idée au moment où tu exectutes la macro, ça t'ouvre l'explorateur windobe, tu sélectionnes le dossier où doit venir s'enregistrer ton fichier.

VB:
LaDate = Format(Now, "yyyy_mm_dd")
Nom = "Ton Nom"
Set finput = Application.FileDialog(msoFileDialogFolderPicker)
finput.Show
On Error Resume Next
    With finput

Fichier = .SelectedItems(1)
Sheets("TonOnglet").Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Fichier & "\" & Nom & "_" & LaDate & ".pdf", Quality:= _
        xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
        OpenAfterPublish:=False
    End With
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 344
Membres
102 865
dernier inscrit
FreyaSalander