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

Fermé
Kasano - 10 févr. 2015 à 10:48
 Kasano - 10 févr. 2015 à 12:25
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 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 423
Modifié par ccm81 le 10/02/2015 à 11:56
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
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 10900 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 2 novembre 2024 2 423
Modifié par ccm81 le 10/02/2015 à 11:59
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
Merci pour ces explications "CCM81"... Je comprends bcp mieux la logique mtn :)
0