Sub Bouton189_Cliquer()
Dim ncopie&, P As Range, h&, lig&, n&, o As OLEObject, c As Range
Application.CopyObjectsWithCells = True
With ActiveSheet
If .Name = "Definitions" Or .Name = "fx" Or .Name = "Needs" Then Exit Sub
ncopie = Int(Abs(Val(InputBox("Nombre de fois :", "Copier"))))
Set P = .[5:10] 'plage à adapter
h = P.Rows.Count
lig = .Range("B" & .Rows.Count).End(xlUp).Row + 2 '2ème ligne vide sous le dernier tableau, à adapter
Application.ScreenUpdating = False
.DrawingObjects.Placement = 2
For n = 1 To ncopie
P.Copy P.Offset(lig - P.Row + h * (n - 1)) 'copie les cellules et les contrôles de formulaire
For Each o In .OLEObjects 'boucle pour copier les contrôles ActiveX
Set c = o.TopLeftCell
If Not Intersect(P, c) Is Nothing Then
With o.Duplicate 'duplication
.Left = o.Left
.Top = c.Offset(lig - P.Row + h * (n - 1)).Top + o.Top - c.Top
End With
End If
Next o, n
End With
End Sub