Excel copier coller une sélection de cellules un x nombre de fois
Résolu
suli1870
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
suli1870 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
suli1870 Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour a tous, je recherche depuis quelques temps une réponse adaptée à mon problème mais je reste sans résultats…
J’aurais besoin de copier – coller la sélection de certaines cellules d’une feuille autant de fois que la valeur indiquée dans une cellule à part. Le tout est présent dans la même feuille.
Autrement dit : Ma sélection s’effectue de la cellule A1 à la cellule C24 une fois sélectionnées, je dois les recopier dans la cellule D1 autant de fois qu’indiqué dans la cellule A25
J’imagine que ce thème a été débattu et traité x fois mais malgré mes essais je n’arrive pas à réaliser une macro qui résolve mon problème.
Pourriez-vous m’aider ? Merci à tous.
J’aurais besoin de copier – coller la sélection de certaines cellules d’une feuille autant de fois que la valeur indiquée dans une cellule à part. Le tout est présent dans la même feuille.
Autrement dit : Ma sélection s’effectue de la cellule A1 à la cellule C24 une fois sélectionnées, je dois les recopier dans la cellule D1 autant de fois qu’indiqué dans la cellule A25
J’imagine que ce thème a été débattu et traité x fois mais malgré mes essais je n’arrive pas à réaliser une macro qui résolve mon problème.
Pourriez-vous m’aider ? Merci à tous.
Configuration: Windows / Firefox 66.0
4 réponses
-
Bonjour Suli, bonjour le forum,
Essaie comme ça :Sub Macro1() Dim NF As Integer 'déclare la variable NF (Nombre de Fois) Dim DEST As Range 'déclare la variable DEST (cellule de DESTination) Dim I As Integer 'déclare la variable I (Incrément) NF = Range("A25").Value 'définit le nombre de fois NF If NF < 1 Then Exit Sub 'si NF est inférieure à 1, sort de la procédure For I = 1 To NF 'boucle de 1 à NF 'définit la cellule de destination DEST (D1 si D1 est vide, sinon la première cellule vi de la colonne D) If Range("D1").Value = "" Then Set DEST = Range("D1") Else Set DEST = Cells(Application.Rows.Count, "D").End(xlUp).Offset(1, 0) Range("A1:C24").Copy DEST 'copie la plage A1:C24 et la colle dans DEST Next I 'prochaine fois de la boucle End Sub
-
Bonsoir ThauTheme,
Merci pour ce bout de code. Ca marche à 80%. Il sélectionne la bonne zone à copier ( A1:C24) et recolle cette sélection en (D1). Cependant si la valeur ''NF'' inscrite en (A25) est supérieure à zéro, ça ne colle pas la zone sélectionée à répétition selon la valeur NF (A25).
Si cette valeur NF avait été de 3 alors il aurait du coller la zone sélectionnée en D1+ G1 + J1
Si cette valeur NF avait été de 5 alors il aurait du coller la zone sélectionnée en D1+ G1 + J1+M1+P1
Actuellement hélas la macro ne recopie qu'une seule fois.
Merci énormément pour votre éclairage. -
Bonjour Suli, bonjour le forum,
Le premier code fonctionnait parfaitement mais copiait les blocs les un en-dessous des autres. Le code corrigé pour qu'ils soient copiés les un à coté des autres :
Sub Macro1() Dim NF As Integer 'déclare la variable NF (Nombre de Fois) Dim DEST As Range 'déclare la variable DEST (cellule de DESTination) Dim I As Integer 'déclare la variable I (Incrément) NF = Range("A25").Value 'définit le nombre de fois NF If NF < 1 Then Exit Sub 'si NF est inférieure à 1, sort de la procédure For I = 1 To NF 'boucle de 1 à NF 'définit la cellule de destination DEST (D1 si D1 est vide, sinon la première cellule vi de la colonne D) If Range("D1").Value = "" Then Set DEST = Range("D1") Else Set DEST = Cells(1, Application.Columns.Count).End(xlToLeft).Offset(0, 1) Range("A1:C24").Copy DEST 'copie la plage A1:C24 et la colle dans DEST Next I 'prochaine fois de la boucle End Sub
-
Merci beaucoup pour ton aide. Je vais classer cette discussion.