Sub Copiexfois()
Dim r As Range, sh As Shape, shCopy As Shape, i As Long, nCol As Long
Dim nRow As Long, j As Long, ctr As Long
nCol = 1
Application.ScreenUpdating = False
For Each sh In Worksheets("Copie").Shapes
sh.Delete
Next sh
For Each r In Worksheets("Shape").Range("B2", Worksheets("Shape").Range("B" & Rows.Count).End(xlUp))
For Each sh In Worksheets("Shape").Shapes
If Not Intersect(sh.TopLeftCell, r.Offset(, -1)) Is Nothing Then Exit For
Next sh
For i = 1 To r.Value
ctr = ctr + 1
sh.Copy
With Worksheets("Copie")
DoEvents
.Paste
Set shCopy = .Shapes(.Shapes.Count)
If ctr Mod nCol = 1 Then
j = 0
nRow = nRow + 1
End If
shCopy.Top = j * (Cells(j + 50, 1).Top) '20 distance entre shapes
shCopy.Left = Cells(1, 5).Left
j = j + 1
End With
Next i
Next r
Application.ScreenUpdating = True
End Sub