Dupliquer ligne feuille 2 X fois selon cellule en feuille 1
Bonjour,
Je suis débutante dans VBA;
Je cherche à dupliquer la ligne A2 à L2 de la Feuille 2 "Data" autant de fois que la quantité indiquée dans la cellule D7 de la Feuille 1"Formulaire de suivi".
J'ai trouvé des codes sur le net mais j'avoue ne pas réussir à les appliquer à mon cas.
Je joints mon formulaire de test Classeur 7
Par avance merci pour l'aide que vous pourrez m'apporter
Audrey
Bonsoir,
Voici le fichier modifié, j'ai également fait en sorte que les nouvelles données se mettent en dessous des précédentes.
Actuellement, votre macro écrasé systématiquement la première ligne, ce qui peut être embettant je pense.
Est-ce que cela convient ?
Merci infiniment!! c'est super
Quand je clique plusieurs fois sur le bouton macro, le lignes se copient les unes à la suite des autres;
En fait je voudrais que chaque fois que je clique sur le bouton, les données soient "rafraichies" et que la macro se relance et recommence à remplir depuis le début à partie de la cellule A2.
Est ce que vous pouvez m'aider?
Par avance merci
Audrey
Pas de soucis.
Mais imaginons qu'il y a 5 lignes et que vous souhaitez maintenant en mettre 3. Faut-il que la macro efface les 2 lignes en plus ?
Bonsoir,
Dans le doute, j'ai fait les deux versions, une qui écrase les lignes en trop et l'autre non.
Bonne soirée,
BI4ol
C'est parfait!!!! Vraiment un très grand merci!!!!
Rebonjour,
Sur le même modèle de recopie, j'ai essayée d'ajouter la copie de la Feuille 1 - Plage B10 à B7000 vers la colonne D de la Feuille 2 mais le résultat est très étonnant: la valeur 1 est répétée 6 fois avant la recopie de la plage de cellules; la procédure n'est peut être pas applicable aux plages de cellules? mon fichier est trop lourd pour un envoi alors j'ai copié le code si dessous.
Egalement, tout se passe bien quand je lance une recopie de 10 à 50 dupliques mais quand je lance une recopie de 6000 dupliques (cas réel d'utilisation), le fichier met environ 5 minutes pour achever la macro - quel conseil pouvez-vous me donner pour gagner du temps? est ce que cela irait plus vite si dans un premier temps, je remplis la première ligne de la feuille 2 puis recopie de la première ligne 6000 fois?
Sub Recopie()
derLn = Worksheets("data").Range("A" & Rows.Count).End(xlUp).Row
Max = Application.Max(derLn, Range("D7").Value)
For I = 1 To Max
If (I <= Range("D7").Value) Then
Range("I4").Copy Worksheets("Formulaire saisie").Range("A" & 9 + I)
Range("G4").Copy Worksheets("data").Range("A" & 1 + I)
Range("G3").Copy Worksheets("data").Range("B" & 1 + I)
Range("D5").Copy Worksheets("data").Range("C" & 1 + I)
Range("B10:B7000").Copy Worksheets("data").Range("D" & 1 + I)
Range("G5").Copy Worksheets("data").Range("G" & 1 + I)
Range("H5").Copy Worksheets("data").Range("I" & 1 + I)
Range("G6").Copy Worksheets("data").Range("J" & 1 + I)
Range("H6").Copy Worksheets("data").Range("L" & 1 + I)
Range("I4").Copy Worksheets("data").Range("M" & 1 + I)
Else
Worksheets("Formulaire saisie").Range("A" & 9 + I).Clear
Worksheets("data").Range("A" & 1 + I).Clear
Worksheets("data").Range("B" & 1 + I).Clear
Worksheets("data").Range("C" & 1 + I).Clear
Worksheets("data").Range("D" & 1 + I).Clear
Worksheets("data").Range("G" & 1 + I).Clear
Worksheets("data").Range("I" & 1 + I).Clear
Worksheets("data").Range("J" & 1 + I).Clear
Worksheets("data").Range("L" & 1 + I).Clear
Worksheets("data").Range("M" & 1 + I).Clear
End If
Next I
Bonsoir,
J'ai amélioré la macro qui devrait aller bien plus vite. 12000 dupliques sont instantanées chez moi.
J'ai également repris votre code pour la colonne D, ça devrait fonctionner.
Dites moi s'il y a le moindre soucis
Voici le code à copier :
Sub Recopie()
'Copie les variables fixes du lot du Formulaire de saisie vers les colonnes de la feuille data - Ligne 1
derLn = Worksheets("data").Range("A" & Rows.Count).End(xlUp).Row
Max = Application.Max(derLn, Range("D7").Value)
Range("I4").Copy Worksheets("data").Range("A2:A" & Range("D7").Value + 1)
Range("G3").Copy Worksheets("data").Range("B2:B" & Range("D7").Value + 1)
Range("D5").Copy Worksheets("data").Range("C2:C" & Range("D7").Value + 1)
Range("I5").Copy Worksheets("data").Range("G2:G" & Range("D7").Value + 1)
Range("J5").Copy Worksheets("data").Range("I2:I" & Range("D7").Value + 1)
Range("I6").Copy Worksheets("data").Range("J2:J" & Range("D7").Value + 1)
Range("J6").Copy Worksheets("data").Range("L2:L" & Range("D7").Value + 1)
Range("K4").Copy Worksheets("data").Range("M2:M" & Range("D7").Value + 1)
Worksheets("data").Range("A" & Range("D7").Value + 2 & ":A" & Max + 1).Clear
Worksheets("data").Range("B" & Range("D7").Value + 2 & ":B" & Max + 1).Clear
Worksheets("data").Range("C" & Range("D7").Value + 2 & ":C" & Max + 1).Clear
Worksheets("data").Range("G" & Range("D7").Value + 2 & ":G" & Max + 1).Clear
Worksheets("data").Range("I" & Range("D7").Value + 2 & ":I" & Max + 1).Clear
Worksheets("data").Range("J" & Range("D7").Value + 2 & ":J" & Max + 1).Clear
Worksheets("data").Range("L" & Range("D7").Value + 2 & ":L" & Max + 1).Clear
Worksheets("data").Range("M" & Range("D7").Value + 2 & ":M" & Max + 1).Clear
Range("B10:B7000").Copy Worksheets("data").Range("D" & 2)
End Sub