Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Enregistrement en PDF avec modification du nom en fonction du contenu de cellules

Elwer

XLDnaute Nouveau
Bonjour à tous,

Je suis relativement débutant dans l'utilisation des macro sur Excel, et je bloque sur l'enregistrement en PDF avec modification du nom en fonction d'informations présente dans ma feuille de calcul...
J'ai déjà fait des macro avec un export simple en PDF :

VB:
Sub SimpleImpressionPDF()
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:="Mouvement de matériels.pdf", _
Quality:=xlQualityStandard, _
  IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub


Mais je souhaite l'adapter pour faire un enregistrement dans le même répertoire que mon classeur actif. Après pas mal de recherche, voici ou je suis arrivé :
Nom souhaité : Mouvement_Détails(B2)_Date(B6)_Trigramme(B4)

Code:
Sub ImpressionPDF()
Dim nom As String ' nom du pdf
Dim chemin As String 'chemin du dossier d'enregistrement
nom = "Mouvement" & "_" & Range("B2").Value & "_" & Range("B6").Value & "_" & Range("B4").Value 'nom du fichier en prenant la date du mouvement, la qualité (départ/retour) et le nom de la personne
chemin = ActiveWorkbook.Path & "\" 'Enregistrement dans le même dossier que le classeur
'enregistrement en PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=nom, Quality:=xlQualityStandard, _
  IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True
End Sub

Mais ça bug sur les lignes en rouge... Est-ce que vous voyez mon erreur, et la bonne solution ?

Je vous remercie!
 
Solution
Après des essais, j'ai encore fait des modifications pour l'enregistrement automatique de mes pdf créés.

Voici ce que ça donne, si ça peut aider d'autres novices.

VB:
Sub ImpressionPDF()
Dim nom As String ' nom du pdf
Dim chemin As String 'chemin du dossier d'enregistrement
Dim MaDat As String 'formalisme de la date

MaDat = Format(Range("B6").Value, "yyyy.mm.dd") 'défini le format de la date
nom = MaDat & "_" & "Mv n°" & Range("B1").Value & "_" & Range("B2").Value & "_" & Range("B4").Value & "_" & Range("B5").Value 'nom du fichier en prenant la date du mouvement, le numéro de mouvement, la qualité (départ/retour), le nom de la personne et le n° d'affaire
chemin = ActiveWorkbook.Path & "\Rapports en PDF\" 'Enregistrement dans le même...

Elwer

XLDnaute Nouveau
Bon, comme quoi, que la solution n'était pas loin, a peine mon message envoyé, j'ai trouvé une solution sur un autre forum avec ce code :

VB:
Sub ImpressionPDF()

Dim nom As String ' nom du pdf
Dim chemin As String 'chemin du dossier d'enregistrement
Dim MaDat As String 'formalisme de la date

MaDat = Format(Range("B6").Value, "yyyy mm dd")
nom = "Mouvement" & "_" & MaDat & "_" & Range("B2").Value & "_" & Range("B4").Value 'nom du fichier en prenant la date du mouvement, la qualité (départ/retour) et le nom de la personne
chemin = ActiveWorkbook.Path & "\" 'Enregistrement dans le même dossier que le classeur

'enregistrement en PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=nom, Quality:=xlQualityStandard, _
  IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:=True

End Sub

J'ai modifié l'ordre, et le format de la date, et ça fonctionne... Tant mieux

Merci quand même à tous !
 

Elwer

XLDnaute Nouveau
Après des essais, j'ai encore fait des modifications pour l'enregistrement automatique de mes pdf créés.

Voici ce que ça donne, si ça peut aider d'autres novices.

VB:
Sub ImpressionPDF()
Dim nom As String ' nom du pdf
Dim chemin As String 'chemin du dossier d'enregistrement
Dim MaDat As String 'formalisme de la date

MaDat = Format(Range("B6").Value, "yyyy.mm.dd") 'défini le format de la date
nom = MaDat & "_" & "Mv n°" & Range("B1").Value & "_" & Range("B2").Value & "_" & Range("B4").Value & "_" & Range("B5").Value 'nom du fichier en prenant la date du mouvement, le numéro de mouvement, la qualité (départ/retour), le nom de la personne et le n° d'affaire
chemin = ActiveWorkbook.Path & "\Rapports en PDF\" 'Enregistrement dans le même dossier que le classeur

'enregistrement en PDF
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=ActiveWorkbook.Path & "\Rapports en PDF\" & nom & ".pdf", _
openafterpublish:=True

'Message de confirmation
MsgBox ("Enregistrement du rapport de mouvement PDF effectué" & vbCrLf & vbCrLf & chemin)

End Sub

Sur le code précédent, j'avais un souci dans le Filename, j'avais juste spécifié le nom sans préciser le chemin d'accès...

Elwer
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…