Bonjour,
Une proposition sur la base que le mieux est toujours de ne pas copier !
Sub ReportCompteurs()
Dim lo$, k%, n%
lo = Replace(Application.Caller, "Cpt", "")
k = IIf(IsNumeric(Right(lo, 1)), 10, 2): n = 4
With Worksheets("Recap")
Do While .Cells(n, k) <> "" Or .Cells(n, k - 1) = ""
n = n + 1
Loop
.Cells(n, k).Resize(, 6).Value = Worksheets("COMPTEURS").ListObjects(lo).TotalsRowRange.Value
.Activate
End With
End Sub
NB- Les deux boutons sont renommés : CptVentes pour le bouton 1 et CptVentes4 pour le bouton 2. La même macro est affectée aux deux boutons.
La macro recupère dans une variable la 2e partie du nom du bouton qui l'a appelée et qui correspond au nom du tableau Excel dont la ligne Total est à récupérer.
Ce nom de tableau permet également d'identifier la 1re colonne de la ligne à servir : B (2) ou J (10). On recherche la première ligne vide. Egalement, bien qu'il n'en ait pas été fait mention, on veille qu'une date figure dans la colonne précédente (s'il n'y a pas lieu d'en tenir compte, supprimer la 2e condition : Or .Cells(n ,k - 1) = "").
Une fois la ligne cible définie, on lui affecte les valeurs de la ligne Total du tableau voulu (sans copier ni coller).
Cordialement.