Private Sub Workbook_Open2()
Dim nDevis, FirstWord, LastWord, MidWord
Dim Msg, Style, Title, Help, Ctxt, Response
Dim Sauvegarde As Variant, Question As Integer
If ThisWorkbook.Name = "Devis - D" & Right(Year(Now), 2) & "-XXXX-01.xlsm" Then
nDevis = InputBox("Saisir le n° devis (D" & Right(Year(Now), 2) & "-XXXX-XX)", , "D" & Right(Year(Now), 2) & "-XXXX-01")
If nDevis Like "D##-####-##" Then
On Error GoTo ErrorHandler 'Voir Label ErrorHandler:
ActiveWorkbook.SaveAs Filename:=Application.ActiveWorkbook.Path & "\" & nDevis
On Error GoTo 0 'On anulle le on error
MsgBox "Numéro devis enregistré"
Else
msg2:
Msg = "Votre n° doit être de la forme : D" & Right(Year(Now), 2) & "-XXXX-XX" & vbCrLf & vbCrLf & "Réessayer Enregistrer sous" & vbCrLf & " | |" & vbCrLf & " \/ \/"
Style = vbYesNoCancel + vbExclamation + vbDefaultButton1
Title = "Erreur dans le numéro de devis"
Help = "DEMO.HLP"
Ctxt = 1000
Response = MsgBox(Msg, Style, Title, Help, Ctxt)
If Response = vbYes Then
Workbook_Open2
ElseIf Response = vbNo Then ' Demande ou sauver le doc et le nom à lui donner
If nDevis = "" Then
nDevis = "D" & Right(Year(Now), 2) & "-XXXX-01"
End If
Sauvegarde = Application.GetSaveAsFilename(ActiveWorkbook.Path & "\Devis - " & nDevis & ".xlsm", FileFilter:="XLSM (*.xlsm), *.xlsm", Title:="Enregistrer-sous ...")
' Demande ou sauver le doc et le nom à lui donner
If Sauvegarde = False Then GoTo msg2
' Si click sur annuler, alors on revient a la boite de dialoque
If Dir(Sauvegarde) <> "" Then ' le fichier renseigné par l'utilisateur existe-t-il ?
Question = MsgBox("Attention le fichier existe déjà" & Chr(13) & "Voulez vous le remplacer ?", vbQuestion + vbYesNo, "Attention...")
' Si oui, faut t-il l'effacer ?
If Question = 6 Then ' Oui
Kill Sauvegarde ' Efface
Else ' Non
GoTo msg2 ' On revient a la boite de dialoque
End If
End If
ThisWorkbook.SaveAs Sauvegarde ' Sauvegarde
Else: MsgBox "Saisie annulée" & vbCrLf & "Attention : fichier original"
End If
End If
End If
Exit Sub
ErrorHandler:
If Err.Number = 1004 Then 'Si on annule la Boite de dialog "écraser..."
Workbook_Open2
Else
MsgBox "Erreur imprévue : " & Err.Number & vbCrLf & Err.Description
End If
End Sub