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
1400
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
16 avril 2020
137
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
1400
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
16 avril 2020
137
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.