Menu

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

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

Votre réponse

4 réponses

Messages postés
4498
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
17 mai 2019
106
0
Merci
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

Commenter la réponse de ThauTheme
Messages postés
4
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
4 mai 2019
0
Merci
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.
Commenter la réponse de suli1870
Messages postés
4498
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
17 mai 2019
106
0
Merci
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

Commenter la réponse de ThauTheme
Messages postés
4
Date d'inscription
jeudi 28 mars 2019
Statut
Membre
Dernière intervention
4 mai 2019
0
Merci
Merci beaucoup pour ton aide. Je vais classer cette discussion.
Commenter la réponse de suli1870