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   -
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

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    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
  2. suli1870 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    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
  3. ThauTheme Messages postés 1564 Statut Membre 160
     
    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
  4. suli1870 Messages postés 4 Date d'inscription   Statut Membre Dernière intervention  
     
    Merci beaucoup pour ton aide. Je vais classer cette discussion.
    0