Macro répéter une action sur les lignes inférieurs

Kasano -  
 Kasano -
Bonjour le forum,

Aujourd'hui, je souhaiterais répéter une opération sur les lignes inférieurs de mon fichier excel.
Cette action est la suivante, je sélectionne ma ligne E26:Y26 et je la copie colle sur les deux lignes disponibles en dessous. Ainsi, je souhaiterais répéter cette opération sur les lignes suivantes ...(E29:Y29, E32:Y32, E35:Y35 ....)

J'imagine qu'une macro est nécessaire. J'ai créé ma macro mais je n'arrive pas à la répéter.

Sub CP()
'
' CP Macro
'

'
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Range("E27:E28").Select
ActiveSheet.Paste
End Sub

Pourriez vous m'aider ?

Merci d'avance

Pascal

2 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    un exemple (tu modifies lideb (ligne début) et lifin (ligne fin)

    Option Explicit
    
    Const lideb = 26
    Const lifin = 62
    
    Public Sub Kopie()
    Dim plage As Range, li As Long
    With ActiveSheet
      For li = lideb To lifin Step 3
        Set plage = .Range("E" & li & ":" & "Y" & li)
        plage.Copy .Range("E" & li + 1)
        plage.Copy .Range("E" & li + 2)
      Next li
    End With
    End Sub


    Cdlmnt
    0
    1. Kasano
       
      That's perfect. Merci pour cette réponse rapide :) ... Si tu as un peu de temps à me consacrer pourrais tu m'expliquer la macro STP ?
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    La même avec quelques explications

    Public Sub Kopie()
    Dim plage As Range, li As Long
    ' depuis la feuille active
    With ActiveSheet
      ' Depuis l ligne lideb jusqu'à la ligne lifin avec un pas de 3
      ' puisqu'on passe de 26 à 29 puis 32 etc ...
      For li = lideb To lifin Step 3
        ' on definit pa plage à copier "Eli:Yli"
        Set plage = .Range("E" & li & ":" & "Y" & li)
        ' on la copie dans les deux lignes qui suivent li (soit li+1 et li+2)
        ' à partir de la colonne E
        plage.Copy .Range("E" & li + 1)
        plage.Copy .Range("E" & li + 2)
        ' passage à la valeur suivane de li
      Next lit
    End With
    End Sub

    RQ. J'ai oublié le point devant les instruction Range dans ma procedure initiale
    .Range dans un With activesheet indique qu'on adresse dans cette feuille là

    Bonne journée
    0
    1. Kasano
       
      Merci pour ces explications "CCM81"... Je comprends bcp mieux la logique mtn :)
      0