Sub PrincipalVersModele()
Dim derlig&, tablo, ligEcrit&, i&, j&, n&, nbrLig&, nbbloc&
  Application.ScreenUpdating = False
  'effacer les précédentes valeurs
  With Sheets("Modele")
    .Range("a18:z44").ClearContents   ' du premier bloc
    .Range("a54:a" & .Rows.Count).EntireRow.Delete 'tous les autres blocs
  End With
  
  'lecture des valeurs sources à copier dans tablo
  With Sheets("Principal")
    derlig = .Cells(.Rows.Count, "a").End(xlUp).row
    If derlig = 2 Then
      MsgBox "Pas de données sur la feuille 'Principal' -> Fin"
      Exit Sub
    End If
    ' définir le nombre de lignes à lire (multiple de 14)
    ' ==> on pourra donc prendre des lignes sources vides en compte !
    ' pas d'incidence sur le résultat,
    ' mais ça simplifie grandement le code par la suite
    nbrLig = derlig - 2
    If nbrLig Mod 14 = 0 Then
      derlig = 2 + 14 * Int(nbrLig / 14)
    Else
      derlig = 2 + 14 * (1 + Int(nbrLig / 14))
    End If
    'lecture des données sources
    tablo = .Range(.Cells(3, "a"), .Cells(derlig, "d")).Value
  End With
  
  With Sheets("Modele")
    .Activate
    'copie du 1ier bloc (vide) autant de fois qu'il le faut
    nbbloc = Int((derlig - 2) / 14) - 1
    If nbbloc > 0 Then .Rows("18:53").Copy .Rows(54).Resize(nbbloc * 36)
    'écriture des valeurs de tablo sur "Modele"
    ligEcrit = 18   'ligne de la future écriture des données
    n = 0   ' comptage du nombre de lignes écrites
    For i = 1 To UBound(tablo)
      .Cells(ligEcrit, "a") = tablo(i, 1)
      .Cells(ligEcrit, "k") = tablo(i, 2)
      .Cells(ligEcrit, "s") = tablo(i, 3)
      .Cells(ligEcrit, "w") = tablo(i, 4)
      n = n + 1
      If n = 14 Then    ' fin d'un bloc
        ligEcrit = ligEcrit + 10
        n = 0
      Else              ' toujours dans le même bloc
        ligEcrit = ligEcrit + 2
      End If
    Next i
    Application.CutCopyMode = False
    Application.Goto .Range("a1"), True
    ' définition zone d'impression
    ActiveSheet.PageSetup.PrintArea = .Range("a1:z" & ligEcrit - 1).Address
  End With
End Sub