Excel copier coller une sélection de cellules un x nombre de fois

Résolu/Fermé
suli1870 Messages postés 4 Date d'inscription jeudi 28 mars 2019 Statut Membre Dernière intervention 4 mai 2019 - 28 mars 2019 à 10:24
suli1870 Messages postés 4 Date d'inscription jeudi 28 mars 2019 Statut Membre Dernière intervention 4 mai 2019 - 4 mai 2019 à 12:24
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.




Configuration: Windows / Firefox 66.0
A voir également:

4 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
28 mars 2019 à 15:15
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

0
suli1870 Messages postés 4 Date d'inscription jeudi 28 mars 2019 Statut Membre Dernière intervention 4 mai 2019
Modifié le 29 mars 2019 à 23:21
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.
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
1 avril 2019 à 09:01
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

0
suli1870 Messages postés 4 Date d'inscription jeudi 28 mars 2019 Statut Membre Dernière intervention 4 mai 2019
4 mai 2019 à 12:24
Merci beaucoup pour ton aide. Je vais classer cette discussion.
0