Copier / Coller bloc de lignes, x fois

Balsam021 -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour à tous,

J'apprends peu VBA tout seul au boulot et je galère un peu pour obtenir de l'aide.

En gros j'aurais besoin d'une macro qui sélectionne un bloc de lignes (50 environ, contenant des formules de calcul, un module en quelque sorte), et qui copie-colle x lignes en dessous du bloc du dessus, x fois,

Toute aide est la bienvenue, je peux envoyer un fichier neutre au besoin,

Merci d'avance,



Configuration: Windows / Firefox 78.0
A voir également:

2 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
ton explication est assez floue.
veux tu recopier plusieurs fois un bloc de lignes, en dessous de ce bloc, en sautant à chaque fois un certain nombre de lignes?
commence par créer une macro qui fait la premiere copie, en utilisant l'enregistreur de macros.
montre-nous ensuite le code généré, nous pourrons sans doute t'aider à l'adapter.
0
Balsam021
 
Bonjour,

Merci de ta réponse,

Voici le texte de la macro lors d'un enregistrement manuel,



Sub Macro1()
'
' Macro1 Macro
'

'
Rows("12:12").Select
ActiveWindow.SmallScroll Down:=57
Rows("12:86").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=9
Rows("88:88").Select
ActiveSheet.Paste
End Sub



J'aimerais répéter ça x fois, en décalant à chaque fois du même espacement, pour arriver à x nombre de modules de calcul,

Merci d'avance de ton aide,
Cdt,
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 
suggestion:
Sub Macro1()
Dim rgsource As Range, rgdest As Range, i As Integer, x As Integer, nrows As Long
x = 2
Set rgsource = Intersect(ActiveSheet.UsedRange, ActiveSheet.Rows("12:86"))
nrows = rgsource.Rows.Count
Set rgdest = rgsource
For i = 1 To x
    Set rgdest = rgdest.Offset(1 + nrows, 0)
    rgsource.Copy rgdest
Next i
End Sub
0