Private Sub CommandButton1_Click()
'*************************
'déclaration des variables
Dim nomfichier As String
Dim nomfichier1 As String
Dim li As Range
Dim tbl() As Single
Dim x As Integer
Dim col As Range
Dim tbc() As Single
'*************************
'évite les basculements d'écrans
Application.ScreenUpdating = False
' bouton valider
nomfichier = ActiveWorkbook.Name
'ouverture nouveau classeur - 1 feuille - ne fonctionne pas sous XL97
défaut = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
Workbooks.Add
Application.SheetsInNewWorkbook = défaut
nomfichier1 = ActiveWorkbook.Name
'copie la feuille
Windows(nomfichier).Activate
'***********************
'tableau des lignes tbl
x = 0
ReDim tbl(Range("Zone_d_impression").Rows.Count - 1)
For Each li In Range("Zone_d_impression").Rows
tbl(x) = li.RowHeight
x = x + 1
Next li
'***********************
'************************
'tableau des colonnes tbc
x = 0
ReDim tbc(Range("Zone_d_impression").Columns.Count - 1)
For Each col In Range("Zone_d_impression").Columns
tbc(x) = col.ColumnWidth
x = x + 1
Next col
'************************
Range("Zone_d_impression").Copy
'colle dans nouveau fichier
Windows(nomfichier1).Activate
ActiveSheet.Range("B6").Select
ActiveSheet.Paste
'*******************************
'récupère les hauteurs de lignes
x = 0
For Each li In Selection.Rows
li.RowHeight = tbl(x)
x = x + 1
Next li
'*******************************
'*********************************
'récupère les hauteurs de colonnes
x = 0
For Each col In Selection.Columns
col.ColumnWidth = tbc(x)
x = x + 1
Next col
'*********************************
'protège les cellules
ActiveSheet.Range(Selection.Address).Locked = True
ActiveSheet.Protect
ActiveSheet.Range("B6").Select
'enregistre sous le répertoire Factures, selon numéro de facture
ChDir (ThisWorkbook.Path & "\Users\Philippe\Documents\Sauvegardes Devis")
'choix avec nom par défaut, possibilité de changer le nom ou annuler
fermer = Application.GetSaveAsFilename(ActiveSheet.Range("E 17").Value, "Fichiers Excel,*.xls")
'si annulation
If fermer = False Then
Windows(nomfichier1).Activate
ActiveWorkbook.Close Savechanges:=False
Exit Sub
End If
'sinon
ActiveWorkbook.SaveAs Filename:=fermer
ActiveWorkbook.Close
'retour sur modèle
'raz champ Aremplir
'incrément N° commande
num = Format(Val(Right(Range("R18"), 3)) + 1, "000")
ActiveSheet.Unprotect
Range("R18") = Left(Range("R18"), 8) & num
ActiveSheet.Protect
'sauve modèle avec numéro incrémenté
'ActiveWorkbook.Save
'réautorise les basculements d'écran
Application.ScreenUpdating = True
End Sub