1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| Option Explicit
Private Declare Function SHCreateDirectoryEx Lib "Shell32.dll" Alias "SHCreateDirectoryExA" _
(ByVal hwnd As Long, _
ByVal pszPath As String, _
ByVal lngsec As Long) As Long
Private Function CreationDossier(sDossier) As Long
Dim Rep As Long
Rep = SHCreateDirectoryEx(0&, sDossier, 0&)
End Function
Sub Enregistrer()
Dim Rep As Long, sFichier As String
Dim FSO As Object, sDossierSauvegarde As String
sDossierSauvegarde = ThisWorkbook.Path & "\" & "Sauvegarde"
CreationDossier sDossierSauvegarde
sFichier = Feuil1.Range("F3")
If NomFichierValide(sFichier) Then
Rep = MsgBox("Voulez-vous sauvegarder en pdf ?", vbYesNo)
If Rep = vbYes Then
Set FSO = CreateObject("Scripting.FileSystemObject")
sFichier = sDossierSauvegarde & "\" & sFichier
If FSO.FileExists(sFichier & ".pdf") Then
Rep = MsgBox("Le fichier pdf existe déjà, confirmer son écrasement ?", vbYesNo)
If Rep = vbYes Then SavePDF_XLS sFichier
Else
SavePDF_XLS sFichier
End If
Set FSO = Nothing
End If
Else
Feuil1.Range("F3").Select
MsgBox "Nom de fichier invalide", vbCritical + vbOKOnly
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 Sub SavePDF_XLS(sNomFichier As String)
Dim Ar(1) As String
Ar(0) = Feuil1.Name
Ar(1) = Feuil2.Name
Application.ScreenUpdating = False
Sheets(Ar).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=sNomFichier & ".pdf", _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
Sheets(Feuil1.Name).Select
Application.DisplayAlerts = False
ThisWorkbook.SaveCopyAs sNomFichier & ".xlsb"
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub |
Partager