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

  • Initiateur de la discussion Initiateur de la discussion chacal33
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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:
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 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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
235
Réponses
4
Affichages
177
Réponses
4
Affichages
461
Retour