[Déplacé .NET -> VBA]Macro pour Copier une zone d'une feuille de calcule X fois [Résolu]

Messages postés
27
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
3 août 2014
- - Dernière réponse : aouaoua
Messages postés
27
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
3 août 2014
- 14 sept. 2011 à 11:18
Bonjour le Forum
actuellement je suis sur un travaille qui consiste a reproduire une zone qui comporte un formulaire qui devrait étre reproduit X fois selon le nombre de clients, j'utlise actuellemnt un code qui me permis de réaliser cette opération le hic c'est qu'il copier la zone mais dans la meme place sans avancer en quelque sorte il écrase.
Voici le code :

Sub copiercoller()
On Error Resume Next
Dim repeats As Long, ctrl As Long
    repeats = Application.InputBox(prompt:="Entrez le nombre de fois à copier", Type:=1)
    repeats = repeats * 17
    Range("A2: G63").Select
    Selection.Copy
    For ctrl = 17 To repeats Step 17
    Range("A2").Offset(ctrl, 0).Insert Shift:=xlDown     'PasteSpecial
    Range("A65").Select
    Next
End Sub

Merci de votre aide
FOU DE clientS CODES
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
210
3
Merci
et si, pour plus de clarté, tu veux en plus insérer une ligne supplémentaire entre ces plages ===>>
Dim ma_plage_a_copier As Range
  Set ma_plage_a_copier = Range("A2:G4") ' ici la plage à copier (la tienne, c'est A2:G63)
  For i = 1 To 4 ' pour copier 4 fois (toi, c'est 17)
     ma_plage_a_copier.Copy Destination:=Range("A" & ma_plage_a_copier.Row + i + i * ma_plage_a_copier.Rows.Count)
  Next


T'as presque tout, là, non ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Dire « Merci » 3

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

Codes Sources 128 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
59
0
Merci
Salut

A quoi te sert ta boucle avec ctrl puisque tu n'utilises pas cette variable ?
Tu as créé un code pour copier des cellules.
Mais quelle destination voudrais-tu atteindre ?
D'autres feuilles ?
Existent-elles ?
Où se trouve le code pour les créer ?
Voir ce simple code + l'aide :
    Dim oNewSheet As Worksheet
    Set oNewSheet = Sheets.Add
    oNewSheet.Name = "Toto " & Sheets.Count
    Set oNewSheet = Nothing

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
30 octobre 2011
0
Merci
Bonsoir tous,

aouaoua, dans ton code, où se trouve l'instruction qui permet de coller ton
Range("A2: G63")?

2 opérations sont nécessaires pour un copier/coller.
1) copier par l'instruction Copy
2) coller par l'instruction Paste ou PasteSpecial

jack, la variable ctrl est bien utilisée:
Range("A2").Offset(ctrl, 0).Insert Shift:=xlDown
Commenter la réponse de cs_GG72
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
210
0
Merci
Bonjour,

- il te faut t'intéresser à la méthode copy (ton aide VBA sur ce mot) avec son paramètre destination
- évite ces select qui n'apportent que lourdeurs.
- je ne comprends pas trop ce que tu fais dans ta boucle actuelle, car elle a un pas (step) de 17 (donc ctrl = multiple de 17===>> et ton offset sur ctrl également), alors que ce que tu sembles vouloir copier (la plage A2: G63) concerne 62 lignes !
- et ton select de la cellule A65, on se demande bien pourquoi tu le fais !

Tu voudras bien comprendre toutes les interrogations que cela suscite !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
94
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
30 octobre 2011
0
Merci
Oups!!!

aouaoua, fatigué ce soir. Ne pas tenir compte de mon précédent message.

Excuses
Commenter la réponse de cs_GG72
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
210
0
Merci
Bon...
un petit exemple (presque du tout cuit) :

Dim ma_plage_a_copier As Range
  Set ma_plage_a_copier = Range("A2:G4") ' ici la plage à copier (la tienne, c'est A2:G63)
  For i = 1 To 4 ' pour copier 4 fois (toi, c'est 17)
     ma_plage_a_copier.Copy Destination:=Range("A" & ma_plage_a_copier.Row + i * ma_plage_a_copier.Rows.Count)
  Next




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Messages postés
27
Date d'inscription
lundi 19 février 2007
Statut
Membre
Dernière intervention
3 août 2014
0
Merci
Bonjour le Forum
je remercié tous le monde pour les suggestions et les remarques qui ont été formulées a ce sujet et le temps précieux accordé donc pour finir je vous dis 1000 merci a vous tous et finalement j'ai opté pour la réponse ucfoutu.
merci mes amis

FOU DES CODES
Commenter la réponse de aouaoua