thespeedy20
XLDnaute Occasionnel
Bonjour le Forum,
J'ai une zone de texte dans une cellule(A2), le nombre de répétition en B2... dans la feuille Shape, j'aimerais copier cette zone de texte à intervalle régulier(ex: toutes les 50lignes) dans la feuille copie.
Pour l'instant j'arrive à faire la copie avec la macro suivante mais j 'ai décalage entre les zones de texte... J'aimerais aussi pouvoir changer la cellule de départ
J'ai un bouton sur la feuille shape pour la copie, quand je l'utilise les shapes ne sont copiés au bon endroit, si je suis dans l'éditeur, c'est copié au bon endroit avec décalage
Merci d'avance pour votre aide
OLi
J'ai une zone de texte dans une cellule(A2), le nombre de répétition en B2... dans la feuille Shape, j'aimerais copier cette zone de texte à intervalle régulier(ex: toutes les 50lignes) dans la feuille copie.
Pour l'instant j'arrive à faire la copie avec la macro suivante mais j 'ai décalage entre les zones de texte... J'aimerais aussi pouvoir changer la cellule de départ
J'ai un bouton sur la feuille shape pour la copie, quand je l'utilise les shapes ne sont copiés au bon endroit, si je suis dans l'éditeur, c'est copié au bon endroit avec décalage
VB:
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
Merci d'avance pour votre aide
OLi