moins simple, essayez ceci. cela suppose que la liste de validation ne contient que des valeurs "texte"
Private Sub CommandButton1_Click()
Dim dercol As Integer, derlig As Integer
Dim plage As Range, cel As Range
If TextBox1 = "" Then MsgBox "Veuillez renseigner un nom de projet !": Exit Sub
If TextBox2 = "" Then MsgBox "Veuillez renseigner un nom d'architecte !": Exit Sub
With Worksheets("Feuil1")
dercol = .Cells(7, Columns.Count).End(xlToLeft).Column + 1
Set plage = .Range("E7:E" & Range("B" & Rows.Count).End(xlUp).Row)
plage.Copy .Cells(7, dercol)
.Range(.Cells(7, dercol), .Cells(15, dercol)).ClearContents
.Cells(7, dercol) = TextBox1.Value
.Cells(8, dercol) = TextBox2.Value
derlig = .Cells(Rows.Count, dercol).End(xlUp).Row
For Each cel In .Range(.Cells(17, dercol), .Cells(derlig, dercol))
If cel.HasFormula = False And IsNumeric(cel) Then cel.ClearContents
Next cel
With .Cells(7, dercol)
.ColumnWidth = 40 'largeur colonne
End With
End With
Unload Me
End Sub
Crdlt