Ajouter des lignes à un tableau en respectant la sécurité et le layout
je possède un tableau excel auquel je souhaiterais ajouter des lignes:
Je souhaiterais ajouter un bloc de 4 lignes à la fin du tableau. Ce bloc doit être identique au précédent excepté qu'il doit commencer avec le numéro de la 1ere colonne incrémenté (ici 3). Les textes doivent être identiques: les champs en rouges doivent êtres identiques et non éditables (les cellules devront avoir le paramètre locked), ceux en jaunes peuvent être changés et la colonne TOTAL contient une formule et ne doit pas être éditable (les cellules devront avoir le paramètre locked).
Pour respecter la sécurité, j'ai mis les cellule en locked et verrouillé la feuille (mot de passe: 000)
Le layout (couleurs et bordures) doit être identique. En particulier La bordure externe du tableau et des sections doit être avec une taille plus grosse que les lignes simples.
J'ai essayé cela mais cela ne fonctionne pas:
Sub AddANewPrivateExpert()
Dim DerniereLigne As Long
Dim Sh As Worksheet
Set Sh = ActiveSheet.ListObjects("PrivateExpertTable")
With Sh
DerniereLigne = .Cells(.Rows.Count, "F").End(xlUp).Row
.Range(.Cells(DerniereLigne - 3, "A"), .Cells(DerniereLigne, "F")).Copy Destination:=.Cells(DerniereLigne + 1, "A")
.Range(.Cells(DerniereLigne + 1, "A"), .Cells(DerniereLigne + 1, "F")).Borders(xlEdgeTop).Weight = xlMedium
.Cells(DerniereLigne + 1, "A") = .Cells(DerniereLigne - 3, "A") + 1
.Range(.Cells(DerniereLigne + 2, "D"), .Cells(DerniereLigne + 3, "D")).ClearContents
End With
Set Sh = Nothing
End SubIci le fichier:
Pourriez-vous m'aider svp?
Merci d'avance pour votre aide
Ici la réponse à mon problème:
Sub AddANewPrivateExpert()
Dim DerniereLigne As Long
Dim Sh As Worksheet
Set Sh = ActiveSheet
With Sh
DerniereLigne = .Cells(.Rows.Count, "F").End(xlUp).Row
.Range(.Cells(DerniereLigne + 1, "A"), .Cells(DerniereLigne + 4, "F")).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
.Range(.Cells(DerniereLigne - 3, "A"), .Cells(DerniereLigne, "F")).Copy Destination:=.Cells(DerniereLigne + 1, "A")
.Range(.Cells(DerniereLigne + 1, "A"), .Cells(DerniereLigne + 1, "F")).Borders(xlEdgeTop).Weight = xlMedium
.Cells(DerniereLigne + 1, "A") = .Cells(DerniereLigne - 3, "A") + 1
.Range(.Cells(DerniereLigne + 2, "D"), .Cells(DerniereLigne + 3, "D")).ClearContents
End With
Set Sh = Nothing
End Sub