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

  • Initiateur de la discussion Initiateur de la discussion miloo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 ?
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
771
Retour