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
A voir également:

2 réponses

ccm81 Messages postés 11033 Statut Membre 2 433
 
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
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
ccm81 Messages postés 11033 Statut Membre 2 433
 
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
Kasano
 
Merci pour ces explications "CCM81"... Je comprends bcp mieux la logique mtn :)
0