Excel copier coller une sélection de cellules un x nombre de fois [Résolu/Fermé]

Signaler
Messages postés
4
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
4 mai 2019
-
Messages postés
4
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
4 mai 2019
-
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

4 réponses

Messages postés
1412
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
9 mars 2021
153
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

Messages postés
4
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
4 mai 2019

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.
Messages postés
1412
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
9 mars 2021
153
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

Messages postés
4
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
4 mai 2019

Merci beaucoup pour ton aide. Je vais classer cette discussion.