XL 2013 [Résolu] VBA copier une cellule dans une range plusieurs fois à la suite

chacal33

XLDnaute Junior
Bonsoir à toutes et à tous,

je suis probablement fatigué... mais je bloque sur un code depuis quelques heures.

Je souhaite copier une cellule dans une range sur une autre feuille plusieurs fois à la suite.

Pour l'instant j'ai le code suivant:

VB:
Dim x As Long
Dim y As Long
Dim z As Long
Dim LastRPreTCD As Long
Dim LastCData As Long
LastRPreTCD = Sheets("PRETCD").Cells(Sheets("PRETCD").Rows.Count, "A").End(xlUp).Row
LastCData = Sheets("DATA").Cells(1, Sheets("DATA").Columns.Count).End(xlToLeft).Column
x = (LastCData - 1) * (LastRPreTCD - 1)

For z = 2 To LastCData
For y = 2 To x Step 21
Sheets("DATA").Cells(1, z).Copy Sheets("PRETCD").Range(Cells(y, 12), Cells(y + 22, 12))
Next
Next

Si quelqu'un avait la bonté d'éclairer ma route, je vous en serai reconnaissant.

A+

Matt
 

dg62

XLDnaute Barbatruc
re,
à tester
VB:
Sub TEST()

Dim x As Long
Dim y As Long
Dim z As Long
Dim LastRPreTCD As Long
Dim LastCData As Long
LastRPreTCD = Sheets("PRETCD").Cells(Sheets("PRETCD").Rows.Count, "A").End(xlUp).Row
LastCData = Sheets("DATA").Cells(1, Sheets("DATA").Columns.Count).End(xlToLeft).Column
x = (LastCData - 1) * (LastRPreTCD - 1)
n = 2
For z = 2 To LastCData

For y = n To x
Sheets("DATA").Cells(1, z).Copy Sheets("PRETCD").Range(Cells(y, 12), Cells(y + 22, 12))

Next
n = n + 21
Next

End Sub
 

dg62

XLDnaute Barbatruc
bonjour
ça semble fonctionner

VB:
Sub TEST()

Dim x As Long
Dim y As Long
Dim z As Long
Dim LastRPreTCD As Long
Dim LastCData As Long
LastRPreTCD = Sheets("PRETCD").Cells(Sheets("PRETCD").Rows.Count, "A").End(xlUp).Row
LastCData = Sheets("DATA").Cells(1, Sheets("DATA").Columns.Count).End(xlToLeft).Column


n = 2
For z = 2 To LastCData

For y = n To LastRPreTCD
Sheets("DATA").Cells(1, z).Copy Sheets("PRETCD").Cells(y, 12)

Next
n = n + 21
Next

End Sub
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil,

dg62
Juste de passage en mode dubitatif ;)
VB:
Sub Test()
Dim y&
y = 1600
MsgBox Range(Cells(y, 12), Cells(y, 12)).Address(0, 0) 'bizarre comme syntaxe, non ? ;-)
MsgBox Cells(y, 12).Address(0, 0)
MsgBox Cells(y, "L").Address(0, 0)
MsgBox Range("L" & y).Address(0, 0)
End Sub
 

dg62

XLDnaute Barbatruc
Bonjour le fil,

dg62
Juste de passage en mode dubitatif ;)
VB:
Sub Test()
Dim y&
y = 1600
MsgBox Range(Cells(y, 12), Cells(y, 12)).Address(0, 0) 'bizarre comme syntaxe, non ? ;-)
MsgBox Cells(y, 12).Address(0, 0)
MsgBox Cells(y, "L").Address(0, 0)
MsgBox Range("L" & y).Address(0, 0)
End Sub
Bonjour Staple1600
effectivement, bien que cela fonctionne pas très orthodoxe

VB:
Sheets("DATA").Cells(1, z).Copy Sheets("PRETCD").Cells(y, 12)

Cordialement
 

chacal33

XLDnaute Junior
Bonjour à tous les 2

Le code de dg62 fonctionne.
La variable x semblait donc finalement de trop.

Ceci étant dit, je ne comprends tout de même pas pourquoi mon 1er code ne fonctionnait pas. Je le trouvais bien écrit.... Enfin, c'est la vie!

Merci
 

Discussions similaires

Réponses
12
Affichages
506
Réponses
17
Affichages
759
Réponses
3
Affichages
547