Sub Validation()
Dim ClassDest As String, Onglet As String, Msg As String
Dim ReponseMsgbox As Variant, NumFact As Integer
ThisWorkbook.Activate
Msg = "Voulez vous valider cette facture ?" & Chr(10) & "Le numéro de la prochaine facture sera incrémenté de 1"
ReponseMsgbox = MsgBox(Msg, vbYesNoCancel, "Validation")
If ReponseMsgbox = vbCancel Then Exit Sub
If ReponseMsgbox = vbYes Then
NumFact = [codes!A2]
Onglet = Format(Now(), "YY-MM") & "-" & NumFact
'existe-t-il dans le répertoire un classeur factures-févr05.xls si on est en février ?
'détermination du nom de ce classeur en fonction de mois-Année en cours
ClassDest = "Factures-" & Format(Now(), "mmmyy") & ".xls"
'activer le fichier
On Error Resume Next: Err.Clear
Workbooks(ClassDest).Activate
'si le classeur n'est pas déjà ouvert, l'ouvrir
If Err <> 0 Then
On Error Resume Next: Err.Clear
Workbooks.Open (ThisWorkbook.Path & "\" & ClassDest)
'si le classeur n'existe pas, le créer en utilisant le modèle "modèlemensuel"
If Err <> 0 Then Workbooks.Add(ThisWorkbook.Path & "\modèlemensuel").SaveAs (ThisWorkbook.Path & "\" & ClassDest)
End If
'on exporte la facture validée dans le classeur mensuel, en faisant un copier-coller valeurs
'ce qui fige la date, le numéro de facture et les montants facturés
On Error Resume Next: Err.Clear
Workbooks("Essais-facture.xls").Sheets("facture").Copy _
After:=Workbooks(ClassDest).Sheets(Workbooks(ClassDest).Worksheets.Count)
ActiveSheet.Name = Onglet
'Suppression des formules
Cells.Select: Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False: Cells(1, 1).Select
ActiveSheet.Shapes("CmdSuite").Delete
Sheets("récap").Range("A6553").End(xlUp).Offset(1, 0) = Sheets(Onglet).Range("G12")
Sheets("récap").Range("B6553").End(xlUp).Offset(1, 0) = Sheets(Onglet).Range("E14")
Sheets("récap").Range("C6553").End(xlUp).Offset(1, 0) = Sheets(Onglet).Range("E15")
Sheets("récap").Range("D6553").End(xlUp).Offset(1, 0) = Sheets(Onglet).Range("G52")
Sheets("récap").Range("E6553").End(xlUp).Offset(1, 0) = Sheets(Onglet).Range("G9")
Workbooks(ClassDest).Save
'sur le classeur Essais-factures, on efface la saisie précédente, on incrémente le numéro et on le sauve
With Workbooks("Essais-facture.xls")
.Activate
.Sheets("codes").Range("A2") = .Sheets("codes").Range("A2") + 1
.Save
End With
Else
'Si la facture n'est pas validée (incomplète par exemple)
'elle peut cependant être conservée sous forme d'un document temporaire
'Mais pour éviter des erreurs (deux factures avec le même numéro...)
'le numéro de facture est remplacé par la dénomination "en attente"
' et le fichier est sauvegardé avec un nom temporaire comportant la date et l'heure
Sheets("Facture").Copy
ActiveWorkbook.Sheets("facture").Range("G12") = "En attente"
Msg = "Attention, le numéro de facture a été effacé. Le document sera enregistré sous un nom temporaire" & Chr(10) & _
"et le numéro de facture ne sera pas incrémenté à la prochaine création de facture."
MsgBox (Msg)
'on enregistre le classeur actif avec la date et l'heure dans le nom
strDate = Format(Date, "ddmmyy") & "-" & Format(Time, "hmm")
With ActiveWorkbook
.SaveAs Filename:=ThisWorkbook.Path & "\factureTemp-" & strDate & ".xls"
.Close
End With
End If
Workbooks("Essais-facture.xls").Activate
Application.Goto Reference:="ZoneSaisie"
Selection.ClearContents
Range("facture!A1").Select
ReponseMsgbox = MsgBox("Voulez vous saisir une autre facture ?", vbYesNoCancel, "Suite")
If ReponseMsgbox = vbNo Then Workbooks("Essais-facture.xls").Close
End Sub