Macro Copier/coller à la suite [Fermé]

Signaler
Messages postés
58
Date d'inscription
mardi 30 mai 2006
Statut
Membre
Dernière intervention
18 août 2014
-
Messages postés
58
Date d'inscription
mardi 30 mai 2006
Statut
Membre
Dernière intervention
18 août 2014
-
Bonjour à tous,

Je travaille sur une base de données et j'ai besoin de réaliser une macro qui copie/colle une plage spécifique plusieurs fois à la suite.

En gros mettons qu'il faille que je copie colle A1:C15 en A16:C30. J'arrive à faire cette macro seulement elle se retrouve "figée" et si je l'active une deuxième fois elle me refera le même collage alors que je souhaite qu'elle colle la même source mais à la suite (donc en A31:C45).

Il faudrait qu'à chaque fois que j'active la macro, un copier/coller se déclenche au bon endroit.

Evidemment dans un exemple aussi simple je pourrais faire un simple ctrl+c / ctrl+v, mais dans l'application que j'en ai ce n'est pas possible.

Quelqu'un sait m'aider sur ce point?

Merci d'avance

Bonne journée,

9 réponses

Messages postés
8536
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
8 mai 2021
1 669
Bonjour,

« J'arrive à faire cette macro seulement elle se retrouve "figée"»

Peux-tu nous donner le code utilisé afin qu'on comprenne où se situe le problème ???
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
58
Date d'inscription
mardi 30 mai 2006
Statut
Membre
Dernière intervention
18 août 2014

Bonjour,

Voici le code:

Sub Macro1()
'
' Macro1 Macro
'
' Touche de raccourci du clavier: Ctrl+j
'
Range("A2:C15").Select
Selection.Copy
Range("A16").Select
ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=12
End Sub


En gros je voudrais que la plage copiée reste A2:C15 mais que le A16 soit "dynamique" et que quand j'active la macro via ctrl+j le copiage se fasse à la suite du dernier.

Merci pour ton aide.

Bonne journée,
Messages postés
319
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
27 mars 2020
14
Bonjour

Essaye ce code.

Sub Macro1()
'
' Macro1 Macro
'
' Touche de raccourci du clavier: Ctrl+j
'
Range("A2:C15").Select
Selection.Copy
Range("A16").Select
ActiveSheet.Paste
Range("A30").Select
ActiveSheet.Paste
'ActiveWindow.SmallScroll Down:=12
End Sub


cordialement
Messages postés
58
Date d'inscription
mardi 30 mai 2006
Statut
Membre
Dernière intervention
18 août 2014

Bonjour Iama,

Merci pour ton aide.

Mais ca ne fonctionne pas comme je le souhaite. Dans ton code ca copie directement deux fois la plage initiale. Je cherche pour ma part à ne copier qu'une fois la plage, mais quand je le souhaite. Donc quand j'active la macro je souhaite que celle-ci prenne la première plage et la colle à la suite de ce qui existe déjà.

Par exemple j'active une première fois, ca copie A2:C15 en A16:C30. Si j'active une deuxième fois ca copie en A30:C43 et ainsi de suite. Ce que je souhaite c'est pouvoir déclencher le copiage quand nécessaire.

A+
Messages postés
319
Date d'inscription
mercredi 13 janvier 2010
Statut
Membre
Dernière intervention
27 mars 2020
14
Salut

Je n'avais pas bien compris

je pense que cela va répondre à ton besoin

Sub Macro1()
'
' Macro1 Macro
'
' Touche de raccourci du clavier: Ctrl+j

Dim lig As Integer

Range("A2:C15").Select
Selection.Copy
Selection.End(xlDown).Select
lig = Selection.Row + 1

Range("A" & lig).Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
Messages postés
8536
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
8 mai 2021
1 669
Bonjour,

Plus simplement :
Sub Macro1()
  Range("A2:C15").Copy Cells(UsedRange.Rows.Count + 1, 1)
End Sub
Messages postés
58
Date d'inscription
mardi 30 mai 2006
Statut
Membre
Dernière intervention
18 août 2014

Super, merci à vous deux!!

Je n'arrive pas à faire fonctionner la solution de Patrice mais du coup celle d'Iama me va très bien.

Merci encore

Bonne journée,
Messages postés
8536
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
8 mai 2021
1 669
Re,

Le code en #6 est à mettre dans le module de feuille

Dans un module ordinaire, il faut préciser la feuille, par exemple :
Sub Macro1()
  With ActiveSheet
    .Range("A2:C15").Copy .Cells(.UsedRange.Rows.Count + 1, 1)
  End With
End Sub
Messages postés
58
Date d'inscription
mardi 30 mai 2006
Statut
Membre
Dernière intervention
18 août 2014

Ca marche nickel, merci Patrice!