Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…