Option Explicit
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
Sub EnregistrerSous()
Dim sNomfichier As String
Dim oNomFichier As Variant, sExt As String
ChDir ThisWorkbook.Path
sNomfichier = ThisWorkbook.Sheets("CREER_FACTURE").Range("B11")
sExt = ".pdf"
If NomFichierValide(sNomfichier) = False Then
ThisWorkbook.Sheets("CREER_FACTURE").Range("B11").Select
MsgBox "Nom de fichier invalide", vbCritical + vbOKOnly, "Nom de fichier"
Exit Sub
End If
oNomFichier = Application.GetSaveAsFilename(InitialFileName:=sNomfichier, _
fileFilter:="Fichiers PDF (*" & sExt & ", *" & sExt)
If oNomFichier <> False Then
ThisWorkbook.Sheets("CREER_FACTURE").ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=oNomFichier, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End If
End Sub