Option Explicit
Sub EnregistrerSous_05()
Dim sNomFichier As String, sDossier As String
Dim oNomFichier As Variant, sNomFinal As String
Dim bDoublon As Boolean
bDoublon = True
' bDoublon = False
sDossier = Environ("USERPROFILE") & "\" & "Documents"
'sDossier = ThisWorkbook.Path
sNomFichier = "Fiche Stratégie - " & Feuil1.Cells(10, 9) & " " & Feuil1.Cells(11, 9) & ".pdf"
If NomFichierValide(sNomFichier) = False Then
MsgBox "Attention : Nom de fichier invalide", vbOKOnly + vbCritical
Exit Sub
End If
Feuil1.PageSetup.PrintArea = "$A$1:$U$101"
oNomFichier = Application.GetSaveAsFilename(InitialFileName:=sDossier & "\" & sNomFichier, _
fileFilter:="Fichiers PDF (*.pdf),*.pdf")
If oNomFichier <> False Then
sNomFinal = oNomFichier
If bDoublon Then sNomFinal = RenommerFichier(sDossier, sNomFichier)
Feuil1.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=sNomFinal, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End If
End Sub
Private Function NomFichierValide(sChaine As String) As Boolean
Dim i As Long
Const sCaracInterdits As String = """*/:<>?\|[]"
NomFichierValide = True
If Len(sChaine) = 0 Then
NomFichierValide = False
Exit Function
End If
For i = 1 To Len(sCaracInterdits)
If InStr(sChaine, Mid$(sCaracInterdits, i, 1)) > 0 Then
NomFichierValide = False
Exit Function
End If
Next i
End Function
Private Function RenommerFichier(sDossier As String, sNomFichier As String) As String
Dim sNouveauNom As String
Dim sPre As String, sExt As String
Dim i As Long
Dim Fso As Object
Set Fso = CreateObject("Scripting.FileSystemObject")
If Dir(sDossier & "\" & sNomFichier, vbNormal) <> vbNullString Then
sNouveauNom = sNomFichier
sPre = Fso.GetBaseName(sNomFichier)
sExt = Fso.GetExtensionName(sNomFichier)
i = 0
While Dir(sDossier & "\" & sNouveauNom, vbNormal) <> vbNullString
i = i + 1
sNouveauNom = sPre & Chr(40) & Format(i, "000") & Chr(41) & Chr(46) & sExt
Wend
sNomFichier = sNouveauNom
End If
Set Fso = Nothing
RenommerFichier = sDossier & "\" & sNomFichier
End Function