Merci pour vos premiers conseils.
@thev, merci pour avoir répondu à mes 2 questions avec add
et find
(mais pourquoi systématiquement ajouter une nouvelle ligne vierge ?), j'ai pu adapter comme ceci :
With Sheets("BdD").ListObjects("Evts")
Set ici = .ListColumns("date_evts").Range.Find(cel.Offset(-2, 0), SearchDirection:=xlNext)
If ici Is Nothing Then
.ListRows.Add
i = .ListColumns("date_evts").Range.Find("", SearchDirection:=xlNext).Row
Else
i = ici.Row
End If
i = i - .HeaderRowRange.Row
.ListColumns("date_evts").DataBodyRange.Rows(i).Value = cel.Offset(-2, 0)
.ListColumns("motif").DataBodyRange.Rows(i).Value = Left(bouton.Caption, InStr(bouton.Caption, " : "))
End With
J'avais déjà utilisé ActiveSheet.ListObjects(1).DataBodyRange
, mais ce que je recherche toujours c'est avoir une écriture VBA plus propre. Et je pense que les excelistes ont toujours peur des tableaux (comme des TCD) ! Donc merci pour les inputs futurs ... je vais laisser ouvert le post.
If ActiveSheet.ListObjects(1).ListRows.Count > 0 Then
' copie de l'original
ActiveSheet.ListObjects(1).DataBodyRange.Copy
' collage dans destinataire
Destinataire.Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End If