Sub dupliquer_dernière_année()
Dim tbStruc As ListObject, anneeMax, nbrLignesDeb&, i&, j&
Application.ScreenUpdating = False
With Worksheets("Association Bidon")
'la variable tbStruc est le tableau structuré
Set tbStruc = Range("a6").ListObject
'calcul de l'année max
anneeMax = Application.Max(tbStruc.DataBodyRange.Columns(1))
'on stocke le nombre initial de lignes
nbrLignesDeb = tbStruc.ListRows.Count
'on demande confirmation pour ne pas exécuter deux fois la macro pour la même année
If MsgBox("Nous allons dupliquer les lignes des membres de l'année " & anneeMax & _
"donc créer l'année " & anneeMax + 1 & vbLf & vbLf & _
"Êtes vous d'accord ?", vbYesNo + vbDefaultButton2 + vbQuestion) <> vbYes Then Exit Sub
'on parcours le tableau structuré
'si l'année est égale à anneeMax, on copie la ligne dans une nouvelle ligne
'on en profite pour changer l'année en anneeMax+1
For i = 1 To nbrLignesDeb
If tbStruc.ListRows(i).Range(1) = anneeMax Then
'la ligne correspond à la dernière année - on insère une ligne - on y recopie la ligne i
'et on change l'année de la nouvelle ligne
tbStruc.ListRows.Add
tbStruc.ListRows(i).Range.Copy tbStruc.ListRows(tbStruc.ListRows.Count).Range
tbStruc.ListRows(tbStruc.ListRows.Count).Range(1) = anneeMax + 1
End If
Next
End With
End Sub