Bonjour, Salut LouReed !
Un petit essai à voir :
Sub InserLigne()
ActiveSheet.Range("B13:E13").Insert xlShiftDown, xlFormatFromRightOrBelow
End Sub
Sub Valider()
Dim tbv(), n%, h%, i%, k%
With ActiveSheet
n = .Cells(.Rows.Count, 2).End(xlUp).Row
ReDim tbv(n - 13, 4)
k = IIf(.Range("E10") = "Annuelle", 3, 4)
For i = n To 13 Step -1
tbv(h, 0) = .Cells(i, 2): tbv(h, 1) = .Cells(i, 4)
tbv(h, 2) = .Range("C10"): tbv(h, k) = .Cells(i, 3)
h = h + 1
Next i
If n > 13 Then .Range("B14:E" & n).Clear
With .Range("B13:E13")
.ClearContents
.BorderAround xlContinuous, xlThin
End With
End With
With [Tableau6]
n = .Rows.Count + 1
.Cells(n, 1).Resize(h, 5).Value = tbv
End With
End Sub
J'ai apposé un x dans ton tableau Excel cible, pour que les lignes ajoutées s'y intègrent (ce qui ne serait pas le cas si la première et unique ligne est vide). Les lignes ajoutées se mettront à la suite. Une fois amorcée la première ligne restée vide peut être supprimée.
(Le problème n'intervenant qu'au démarrage, il n'était pas opportun de coder le traitement de ce cas qui ne se produit qu'une fois.)
Cordialement.