Copier N fois une cellule

Bonjour,

J'essaie de faire une macro qui copie plusieurs fois le contenu d’une cellule et que le nombre de lignes à copier dépend de la valeur qui se trouve dans une autre cellule.

J’arrive à le faire mais que pour une cellule et j’ai besoin que cela se répète autant de fois que cellules, De plus les chiffres doivent être collés dans la même colonne.

Voilà ce que j'ai créé comme code

Sub test()

j = Cells(1, 1).Value

Range("B1").Select

Selection.Copy

Range(Cells(1, 3), Cells(j, 3)).Select

ActiveSheet.Paste

End Sub

Ci-joint l'exemple pour que ca soit plus parlant

Merci par avance pour votre aide

678exemple-1.xlsx (9.30 Ko)

Salut,

Si je t'ai bien compris, la macro inscrite dans le fichier ci-joint devrait répondre à ton attente

Sub test()
Dim j As Integer, i As Integer

For j = 1 To Range("A65000").End(xlUp)
    For i = 1 To Cells(j, 1).Value
        Cells(j, 2).Copy Destination:=Range("C" & Range("C65000").End(xlUp).Row + 1)
    Next i
Next j

End Sub

Cordialement

1'014exemple-1.xlsm (19.13 Ko)

Merci beaucoup!

En revanche, cela ne marche que pour les 2-3 1eres lignes?

Des idées pourquoi?

J'ai ajouté des lignes dans le fichier joint pour faire le test mais en cliquant sur le bouton je vois que les 2 premieres lignes copiées...

Merci encore par avance

777exemple-2.xlsm (19.31 Ko)

Bonjour,

Une petite adaptation

Sub test()
Dim j As Integer, i As Integer
    For j = 1 To Range("A" & Rows.Count).End(xlUp).Row
        For i = 1 To Cells(j, 1).Value
            Cells(j, 2).Copy Destination:=Range("C" & Range("C" & Rows.Count).End(xlUp).Row + 1)
        Next i
    Next j
End Sub

A+

Désolé, j'ai oublié un .row

Cette ligne à modifier ainsi :

For j = 1 To Range("A65000").End(xlUp).row

Bonnes salutations.

Ca fonctionne !!!!

Merci beaucoup!!! Génial!!

Bonne soirée

Bonjour

pourriez m'indiquer la commande pour que le résultat s'affiche sur la feuille 2 svp et non sur la feuille 1.

Je ne vois pas à quel moment intervenir dans la boucle.

Meric

Bonjour,

Sub report()
Dim WsS As Worksheet, WsC As Worksheet
Dim j As Integer, i As Integer
    Set WsS = Worksheets("Feuil1") 'Feuille source
    Set WsC = Worksheets("Feuil2") 'Feuille cible
    For j = 1 To WsS.Range("A" & Rows.Count).End(xlUp).Row
        For i = 1 To WsS.Cells(j, 1).Value
            WsS.Cells(j, 2).Copy Destination:=WsC.Range("A" & WsC.Range("A" & Rows.Count).End(xlUp).Row + 1)
        Next i
    Next j
    Set WsC = Nothing: Set WsS = Nothing
End Sub

A+

Bonjour tout le monde,

@ Jean-Louis

Comme je t’ai promis hier soir en privé, je suis venu voir ton message. Je t’avais dit qu’il valait mieux ouvrir un nouveau fil et faire référence à cet ancien fil plutôt que de le récupérer. Mais bon …….

Pour copier-coller en VBA, tu peux utiliser ou non la partie Destination:=. Donc pour répondre à ta question, tu pouvais remplacer la ligne centrale par

Cells(j, 2).Copy Destination:=Sheets("Feuil2").Range("C" & Range("C" & Rows.Count).End(xlUp).Row + 1)

ou simplement par

Cells(j, 2).Copy Sheets("Feuil2").Range("C" & Range("C" & Rows.Count).End(xlUp).Row + 1)

@ Frangy

Je ne comprends pas pourquoi tu compliques la chose avec tes instructions Set ; parfois ça se justifie, parfois pas du tout, non ? Dans un code aussi simple que celui que j'avais proposé à l'époque, je trouve que ça ne se justifie pas.

Amicalement.

Bonjour Yvouille,

Dans mes réponses, je ne cherche pas à optimiser le code mais plutôt à apporter des éléments qui aideront le demandeur à mieux comprendre.

Jean-Louis ayant des difficultés avec la manipulation de l’objet feuille, il me parait intéressant de lui montrer qu’il peut accéder à l'objet directement ou avec une variable y faisant référence... c’est structurant.

D'ailleurs, je constate que tu as la même démarche lorsque tu donnes des indications sur le paramètre Destination de la méthode Copy. Tu aurais pu économiser l'encre et te contenter de donner le code le plus "simple" mais tu as pris la peine d’étoffer, ce qui est sûrement mieux pour Jean-Louis.

Amicalement.

Merci messieurs mais ne vous battez pas pour moi...

Bonne journée.

Salut,

Tu es de retour de quelle planète

Amicalement.

Bonjour tout le monde,

Tout d'abord j'aimerais remercier tous les intervenants de ce site internet pour la quantité d'information que l'on peut trouver!

Cela m'a souvent aidé mais je là je suis bloqué. J'ai exactement besoin de ce code:

Sub twst()

Dim j As Integer, i As Long

For j = 1 To Range("A" & Rows.Count).End(xlUp).Row

For i = 1 To Cells(j, 1).Value

Cells(j, 2).Copy Destination:=Range("C" & Range("C" & Rows.Count).End(xlUp).Row + 1)

Next i

Next j

End Sub

Mais VBA me dit qu'il y a une erreur de type dans la ligne

For i = 1 To Cells(j, 1).Value

Que dois-je modifier pour pouvoir utiliser ce code?

Merci d'avance pour votre aide!

Salut et bienvenue sur le Forum,

Tu aurais mieux fait d'ouvrir un nouveau fil. De toute façon c'est très difficile de te répondre sans ton fichier.

Alors fait d'une pierre deux coups ; ouvre un nouveau sujet et joins-y immédiatement un fichier exemple.

Cordialement.

Bonjour

Jai readapter ce code a mon besoin et cela fonctionne sauf quil me renvoie na car il copie des formule et moi je souhaiterais quil copie le contenu de la cellule quelqun peut il maider

Apparemment tu n’as pas lu ma réponse à Mimoun du 27 novembre 2014

Yvouille a écrit :

Tu aurais mieux fait d'ouvrir un nouveau fil. De toute façon c'est très difficile de te répondre sans ton fichier.

Alors fait d'une pierre deux coups ; ouvre un nouveau sujet et joins-y immédiatement un fichier exemple.

D’ici 24 heures, j’irai voir sur le Forum si quelqu’un t’a répondu, sinon je vais essayer de le faire moi-même.

Cordialement.

lol 24H c'est trop je dois render mon travail au chef ce soir

en plus je ne sais pas comment poster un nouveau commentaire sur ce site

j'ai joint le fichier regarde l'onglet SIMULATEUR

et clic sur le bouton TRANSPOSER PRODUIT FINI tu comprendras mon problem

merci infiniment pour ta précisieuse aide

Normalement on ne traite rien d'urgent sur ce site

Ton fichier n'est pas passé. Attention à l'étape 4 ci-dessous.

joindre un fichier forum

merci beaucoup


Tu penses pouvoir m'aider ?

27classeur1.xlsx (112.03 Ko)

Tu fais vraiment un peu les choses dans la précipitation et ça ne me plait pas trop. Tu m’as envoyé un fichier .xlsx, c’est-à-dire un fichier SANS macro. Si je clique sur le bouton TRANSPOSER PRODUIT FINI, il ne se passe rien !

Va sur le ‘’Forum’’, choisi l’option ‘’Excel-VBA’’ et clique sur ‘’Nouveau’’ afin d’ouvrir un nouveau fil.

Si tu n'as pas le temps d'attendre la réponse, tant pis pour toi

Cordialement.

Rechercher des sujets similaires à "copier fois"