Enregistrement fichier Word en PDF avec variable en nom de fichier
Bonjour,
Je suis débutant en vba.
Sous Word, je mets en page un tableau et j'extrais des données du tableau que je déclare préalablement sous forme de variables.
Pour finir, je souhaite enregistrer le fichier au format PDF avec comme nom de fichier la variable "fichier".
Malheureusement quand j'exécute la macro, j'obtiens un message d'erreur m'indiquant "nom de fichier incorrect".
Si quelqu'un peut m'aider à solutionner ce casse-tête, je lui en serais très reconnaissant !
Voici le code de ma macro:
Sub MiseEnPageDR()
Dim L As Integer
Dim C As Integer
Dim DR As String
Dim DR2 As String
Dim Acteur As String
Dim fichier As String
Dim Resultat As String
Debug.Print ActiveDocument.Tables(2).Rows.Count 'Nombre de lignes
L = ActiveDocument.Tables(2).Rows.Count
' MsgBox L
Debug.Print ActiveDocument.Tables(2).Columns.Count 'Nombre de colonnes
C = ActiveDocument.Tables(2).Columns.Count
' MsgBox C
DR = ActiveDocument.Tables(2).Cell(Row:=2, Column:=C - 7).Range
DR2 = Mid(DR, 1, 9)
Acteur = ActiveDocument.Tables(2).Cell(Row:=2, Column:=C - 6).Range
fichier = DR2 & "_" & Acteur & ".pdf"
MsgBox fichier
ActiveDocument.Tables(2).Cell(Row:=1, Column:=9).Select
Selection.TypeText Text:="Code Article Iris"
ActiveDocument.Tables(2).Cell(Row:=1, Column:=2).Select
Selection.TypeText Text:="Libellé Article Iris"
ActiveDocument.Tables(2).Columns.Width = 27
ActiveDocument.Tables(2).Rows(L).Delete
ActiveDocument.Tables(2).Columns(C).Delete
ActiveDocument.Tables(2).Columns(C - 2).Delete
ActiveDocument.Tables(2).Columns(C - 4).Delete
ActiveDocument.Tables(2).AutoFitBehavior (wdAutoFitContent)
ActiveDocument.Tables(2).Rows.Height = 30
ActiveDocument.Tables(2).Range.Select
Selection.Move unit:=wdParagraph
Selection.Font.Name = "Arial"
Selection.Font.Size = 8
Selection.Font.Bold = True
Selection.Font.Italic = True
Selection.TypeText Text:="TOTAL NOMBRE DE LIGNES = " & (L - 3)
If MsgBox("Voulez-vous ajouter un commentaire ?", vbYesNo, "Demande de confirmation") = vbYes Then
Resultat = InputBox("Commentaire ?", "Titre")
If Resultat <> "" Then 'Si la valeur est différente de "" on affiche le résultat
Selection.Font.Name = "Arial"
Selection.Font.Size = 12
Selection.Font.Bold = True
Selection.Font.Italic = False
Selection.Font.ColorIndex = wdDarkBlue
Options.DefaultHighlightColorIndex = wdYellow
Selection.Range.HighlightColorIndex = wdYellow
Selection.TypeParagraph
Selection.TypeParagraph
Selection.TypeText Text:=Resultat
End If
End If
ChangeFileOpenDirectory "C:\Users\dav_c\Downloads\"
ActiveDocument.ExportAsFixedFormat OutputFileName:= _
"C:\Users\dav_c\Downloads\" & fichier _
, ExportFormat:=wdExportFormatPDF, OpenAfterExport:=False, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
End Sub
Bonjour DavLeChe
Difficile de le trouver celui-là, mais on voit dans la MsgBox our alors il faut aller dans la fenêtre d'exécution
Et on s'aperçois que dans le nom de l'acteur, il y a 2 caractères spéciaux à la fin, d'où l'erreur de nom de fichier
Il faut donc traiter le nom de l'acteur avant de l'inclure dans le nom de fichier
Acteur = ActiveDocument.Tables(2).Cell(Row:=2, Column:=C - 6).Range
Acteur = Left(Acteur, Len(Acteur) - 2)
Fichier = DR2 & "_" & Acteur & ".pdf"@+
Bonjour Bruno, merci beaucoup pour ta contribution, ça fonctionne parfaitement maintenant! :-)
J'avais vu ces caractères "bizarres" à la fin du nom mais je ne savais pas qu'il s'agissait de caractères spéciaux et je ne pensais pas que cela pouvait être à l'origine de mon problème. Tout est dans le détail !
Merci encore pour ton aide et bonne journée !
David