Copier / Coller bloc de lignes, x fois

Balsam021 -  
yg_be Messages postés 23437 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

2 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  2. 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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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