XL 2019 Copier plusieurs lignes et les insérer plusieurs fois sans boucle

miloo

XLDnaute Junior
Bonjour,
j'aimerais copier plusieurs lignes et les insérer plusieurs fois sans boucle si c'est possible, dans un with.
La boucle fait perdre beaucoup de temps à mon code, raison pour laquelle j'aimerais m'en passer.

J'ai essayé d'adapter le code de @eriiic dans le post ci dessous, sans succès:
VB:
Sub dupLigne()
       Rows("1:1").Copy
       Rows("2:" & 2 + [C1]).Insert Shift:=xlDown
End Sub

sachant que ma plage de copie est définie par des variables (de NbLignEntete + 1 à NbLignEntete + NbLignParPers), ainsi que la ligne à partir de laquelle insérer à l'origine (Lign) et le nombre répétitions (NbIDE).
voila le code que j'ai essayé:
Code:
With ThisWorkbook.Worksheets("Janvier")
    .Rows(NbLignEntete + 1 & ":" & NbLignEntete + NbLignParPers).Copy
    .Rows(Lign & ":" & Lign + NbIDE).Insert Shift:=xlDown
End with
ou encore avec
Code:
.Rows(Lign).Resize(NbIDE).Paste Shift:=xlDown
ou encore
Code:
.Rows(Lign).Resize(Rows.Count * NbIDE, 1).PasteSpecial Paste:=xlPasteAll
mais cela ne marche pas
Quelqu'un pourrait-il m'aider?
Merci!
 
Solution
Bonjour,

sachant que ma plage de copie est définie par des variables (de NbLignEntete + 1 à NbLignEntete + NbLignParPers), ainsi que la ligne à partir de laquelle insérer à l'origine (Lign) et le nombre répétitions (NbIDE).
Logiquement le nombre de lignes d'en-tête est égal à 1.
Et ne serait-il pas plus logique d'utiliser le numéro de la ligne d'en-tête plutôt que le nombre de lignes d'en-tête ?

Par contre, il me semble logique d'utiliser le nombre de lignes par personne. ;)


Je pense que tu as fait une erreur de calcul dans ta réflexion : la plage cible ne devrait pas aller de Lign à (Lign + NbIDE), mais plutôt de Lign à (Lign + NbIDE*NbLignParPers - 1). Non ?

Discussions similaires

Statistiques des forums

Discussions
312 209
Messages
2 086 259
Membres
103 167
dernier inscrit
miriame